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
위 코드의 실행 결과는 다음과 같습니다.
입력과 출력의 수에 따라 적절한 결과를 표시하는 것을 알 수 있습니다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB central limit theorem simulation (2) | 2011.05.05 |
---|---|
MATLAB symbolic math toolbox 를 이용한 합성 함수, 역함수 (0) | 2011.04.29 |
MATLAB function handle 추가 (0) | 2011.04.25 |
MATLAB ordinary differential equation , ode45 (10) | 2011.04.24 |
MATLAB laplace, inverse laplace transform (0) | 2011.04.24 |
MATLAB 변수를 저장 하자~ mat file (0) | 2011.04.21 |
MATLAB NaN (0) | 2011.04.20 |
MATLAB 파일 출력 (0) | 2011.04.19 |
댓글