카테고리: 원하는 부분만 골라! 골라!
순서: 남들이 많이 봤던 내용들만 먼저! 먼저!
키워드 검색: 원하는 내용만 뽑아! 뽑아!
매트랩 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
이번에 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
[첫 번째 질문에 대한 답변]
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에 의미가 없기 때문에
불필요한 문장이 될 것 같습니다.
[두 번째 질문에 대한 답변]
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을 보여주지 않겠습니다.)
도움이 됐기를 바랍니다.