가변 개수의 출력값을 받는 함수 정의하기
이 예제에서는 varargout
을 사용하여 가변 개수의 출력 인수를 반환하는 함수를 정의하는 방법을 보여줍니다. varargout
은 함수 출력값들로 구성된 셀형 배열로, 각각의 함수 출력값은 셀에 들어 있습니다.
magicfill.m
이라는 파일에, 요청된 각 출력값에 마방진을 할당하는 함수를 생성합니다.
function varargout = magicfill nOutputs = nargout; varargout = cell(1,nOutputs); for k = 1:nOutputs varargout{k} = magic(k); end
중괄호 {}
를 사용하여 인덱싱하면 셀의 내용이 업데이트됩니다.
magicfill
을 호출하고 세 개의 출력값을 요청합니다.
[first,second,third] = magicfill
first = 1 second = 1 3 4 2 third = 8 1 6 3 5 7 4 9 2
MATLAB®은 varargout
배열 내 순서에 따라 값을 출력값에 할당합니다. 예를 들면 first == varargout{1}
과 같습니다.
출력 인수 목록 또는 출력값 목록의 끝에 varargout
만 단독으로 사용할 수 있습니다. 예를 들면 다음과 같습니다.
function [x,y,varargout] = myfunction(a,b)
이 경우, varargout{1}
은 함수가 반환하는 세 번째 출력값에 해당하므로, nargout
은 length(varargout) + 2
를 반환합니다.