이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

varargout

가변 길이 출력 인수 목록

구문

varargout

설명

예제

varargout은 함수 정의문의 출력 변수로, 이를 사용하면 함수가 임의 개수의 출력 인수를 반환할 수 있습니다. 소문자를 사용하여 varargout을 지정하고, 명시적으로 선언한 출력값 다음에 마지막 출력 인수로 포함시켜야 합니다.

함수가 실행되면 varargout은 1xN 셀형 배열이 되고, 여기서 N은 명시적으로 선언된 출력값 다음에 요청되는 출력값 개수입니다.

예제

모두 축소

이름이 returnVariableNumOutputs.m인 파일에 출력 크기 벡터 s와 가변적인 개수의 추가 출력값을 반환하는 함수를 정의합니다.

type returnVariableNumOutputs
function [s,varargout] = returnVariableNumOutputs(x)
    nout = max(nargout,1) - 1;
    s = size(x);
    for k = 1:nout
        varargout{k} = s(k);
    end
end

출력 s에는 입력 배열 x의 차원이 포함됩니다. 추가 출력값은 s 내 개별 차원에 대응합니다.

3차원 배열을 사용해 함수를 호출하고 세 개의 출력값을 요청합니다.

A = rand(4,5,2);
[s,rows,cols] = returnVariableNumOutputs(A)
s = 1×3

     4     5     2

rows = 4
cols = 5

4차원 배열을 사용해 함수를 다시 호출하고 네 개의 출력값을 요청합니다. 이때 함수는 네 번째 개별 차원을 반환하지 않습니다.

A = zeros(1,4,5,2);
[s,dim1,dim2,dim3] = returnVariableNumOutputs(A)
s = 1×4

     1     4     5     2

dim1 = 1
dim2 = 4
dim3 = 5

A에서 함수를 한 번 더 호출하고 출력값을 하나 요청합니다. 이제 함수는 varargout을 반환하지 않고 A의 차원을 반환합니다.

s = returnVariableNumOutputs(A)
s = 1×4

     1     4     5     2

이름이 variableNumInputAndOutput.m인 파일에 가변적인 개수의 입력값과 출력값을 받는 함수를 정의합니다.

type variableNumInputAndOutput
function varargout = variableNumInputAndOutput(varargin)
    disp(['Number of provided inputs: ' num2str(length(varargin))])
    disp(['Number of requested outputs: ' num2str(nargout)])
    
    for k = 1:nargout
        varargout{k} = k;
    end
end

입력값 2개와 출력값 3개를 포함한 함수를 호출합니다.

[d,g,p] = variableNumInputAndOutput(6,'Nexus')
Number of provided inputs: 2
Number of requested outputs: 3
d = 1
g = 2
p = 3

입력값이나 출력값 없이 함수를 다시 호출합니다.

variableNumInputAndOutput
Number of provided inputs: 0
Number of requested outputs: 0

작업 폴더에 있는 파일에서 빨간색 선을 플로팅하는 plot 함수에 대한 래퍼를 만듭니다. redplot 함수는 가변 길이 입력 인수 목록을 받아서 가변 길이 출력 인수 목록을 반환합니다. 이것은 선 색을 빨간색으로 설정하고 기타 입력값을 plot 함수에 전달합니다. 이 함수 래퍼를 사용하여 redplotplot과 동일한 입력값을 전달하고 선 색이 빨간색임을 지정해 주지 않을 수 있습니다.

type redplot.m
function varargout = redplot(varargin)
    [varargout{1:nargout}] = plot(varargin{:},'Color',[1,0,0]);
end

redplot을 사용하여 선 플롯을 생성합니다.

x = 0:pi/100:2*pi;
y = sin(x);
redplot(x,y)

redplot을 다시 호출하고 plot 함수에 전달할 입력 인수와 출력 인수를 지정합니다.

h = redplot(x,y,'Marker','o','MarkerEdgeColor','green'); 

R2006a 이전에 개발됨