MATLAB 의 함수는 종종 입력과 출력 argument 의 수가 가변적인 경우가 많습니다.

 

x=magic(3)

 

위에서 선언한 변수 x 에 대하여 다음과 같이 max() 함수를 이용할 수 있습니다.

 

s=max(x)

s1=max(x, 3)

[s2 n]=max(x)

 

위 코드를 보면 max() 함수를 이용하는데 x 라는 입력 하나만 줄 수도 있고, x,3 이라는 두 가지 입력을 줄 수도 있고, [s2 n]이라는 2개의 인자가 출력이 되게 할 수도 있습니다.

 

MATLAB 에서 함수의 가변적인 입출력을 가능하게 하는 keyword 가 nargin, nargout 입니다.

 

nargin 은 함수에 입력되는 인자의 수를 말하며, nargout은 함수의 출력의 수를 말 합니다.



 

그럼 예를 들어 설명해 보도록 하죠.

 

다음 코드와 같이 a,b,c 의 입력을 받고 합과 차를 반환하는 함수 my_func() 함수를 nargin, nargout 을 이용하여 만들어 보도록 하겠습니다.

 

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

 

disp(['입력 변수의 수 ' num2str(nargin)]);

 

if (nargin==1) % 입력 인자의 갯수가 1 이면

b=0; % b=0 으로 설정

c=0; % c=0 으로 설정

elseif (nargin==2) % 입력 인자의 갯수가 2 이면

c=0; % c=0 으로 설정

end

 

disp(['출력 변수의 수 ' num2str(nargout)]);

 

 

if nargout==1 % 출력의 갯수가 1개 이면 합을 반환

x=a+b+c;

elseif nargout==2 % 출력의 갯수가 2개 이면 합과 차를 반환

x=a+b+c;

y=a-b-c;

end

 

위 코드의 실행 결과는 다음과 같습니다.

 

 

 

입력과 출력의 수에 따라 적절한 결과를 표시하는 것을 알 수 있습니다.


  1. 캄사 2012.05.07 21:32

    유용한 정보 잘 배워갑니당 ㅎ

  2. Xeonia 2012.05.21 16:29

    매틀랩 배우기 시작했는데 정말 많은 게 있네요 ㅠㅠ
    자주 찾아오겠습니다 감사합니다 ㅎ

  3. 쿠조 2012.05.27 11:49

    아 정말 유용하네요 감사해요~

+ Recent posts