코딩

카테고리: 원하는 부분만 골라! 골라!

순서: 남들이 많이 봤던 내용들만 먼저! 먼저!

키워드 검색: 원하는 내용만 뽑아! 뽑아!

매트랩 nargout 관련 질문

MATLAB
작성자
Godjunpyo (관리자)
작성일
2021-10-12 05:38
조회
332
안녕하세요

이번에 advanced 1 과정  2강을 수강하는 도중에 질문이 생겨서 글 올립니다.

 

1.문제풀이5번에서 함수를 수행할때 출력이 x+iy로 출력 되도록 nargout을 활용하는 부분에서

---------------------------------------

function [x,y] = rectan(r,theta)

x= r*cos(theta);

y= r*sin(theta);

if nargout<2

    x = x+i*y;

end

end

----------------------------------------

출력되는 인자가 2개 이하일때로 설정하여 다음과 같이 작성 하였는데,

여기서 '출력되는 인자'의 정확한 정의를 모르겠어서 알아보는 도중

아래와 같은 식을 작성한뒤에 명령창에 쳐본 결과

----------------------------------------

​function [x,y] = rectan(r,theta)

x= r*cos(theta);

y= r*sin(theta);

nargout

end

-----------------------------------------​

명령창에 입력하는 값이 rectan(2,30*pi/180) 은 nargout이 0이나오고

[x,y] = rectan(2,30*pi/180)은 nargout값이 2이 나오고

x= rectan(2,30*pi/180)​의 nargout값이 1이 나오는데

 

'명령창에 쓰여진 출력값'을 의미하는 것인가요? 그렇다면

맨 위 식의 if문에서

if nargout < 1 로 설정한뒤

rectan(2,30*pi/180)을 명령창에 치는 것도 가능한 것인지 궁금합니다

 

2.또한 nargout에 대해 알아가는 과정에서

'출력인자'가 출력되는 '값'인지 확인해보고싶어

다음과 같이 작성해보았는데

---------------------------------------

function [x,y,z] = test(a,b,c)

x=a;

y=b;

z=c;

nargout

end

-----------------------------------------​

답('ans')으로 나오는 값이    a값, 즉 x값만 나오는데 function 출력 변수의 처음 변수(x)만 ans로 나오는건가요?

 

 

 

 

#매트랩 #기계공학 #nargout
전체 2

  • 2021-10-12 05:43

    [첫 번째 질문에 대한 답변]

    nargout은 function의 출력인자 갯수를 의미합니다.

    rectan(2,30*pi/180)
    만 입력하시면,
    출력인자가 한 개로 설정되어
    ans = 1.7321 + 1.0000i
    만 나오게 됩니다.

    그러나 만약
    [x,y]=rectan(2,30*pi/180)
    를 입력하시면
    출력인자가 2개로 설정되었기 때문에
    nargout<2이 성립하지 않아서
    x = 1.7321
    y = 1.0000
    로 나오게 됩니다.

    질문하신 것처럼
    if nargout < 1 로 설정한 뒤
    rectan(2,30*pi/180)을 명령창에 치게 되면
    x = 1.7321
    y = 1.0000
    로 나오게 되겠지만
    출력인자가 0개라면 function에 의미가 없기 때문에
    불필요한 문장이 될 것 같습니다.


  • 2021-10-12 05:50

    [두 번째 질문에 대한 답변]

    nargout만 치면
    function을 불렀을 때
    출력인자의 갯수를 보여줄텐데

    test(1,2,3)을 입력하신다면,
    nargout = 0 (ans = 0)
    x = 1 이기 때문에
    ans = 1
    을 보여줍니다.

    대신,
    [x,y,z]=test(1,2,3)
    을 입력해줌으로써
    출력인자를 3개로 지정해준다면,
    ans = 3 이 되면서
    x=1
    y=2
    z=3
    을 보여줄 겁니다.

    만약
    [x,y]=test(1,2,3)
    를 입력함으로써
    출력인자를 2개로 지정해준다면,
    ans = 2 이 되면서
    x=1
    y=2
    을 보여줄 겁니다.
    (z=3을 보여주지 않겠습니다.)

    도움이 됐기를 바랍니다.