Main Content

varargin

가변 길이 입력 인수 목록

구문

설명

예제

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

함수가 실행되면 varargin은 1×N 셀형 배열이 되고, 여기서 N은 명시적으로 선언된 입력값 다음에 함수가 받게 되는 입력값 개수입니다. 명시적으로 선언된 입력값 다음에 함수가 입력값을 받지 못한 경우 varargin은 빈 셀형 배열입니다.

예제

모두 확장

이름이 acceptVariableNumInputs.m인 파일에 가변적인 개수의 입력값을 받아 그 입력값의 값을 각각 표시하는 함수를 정의합니다.

type acceptVariableNumInputs
function acceptVariableNumInputs(varargin)
    disp("Number of input arguments: " + nargin)
    celldisp(varargin)
end

여러 개의 입력값을 포함한 함수를 호출합니다.

acceptVariableNumInputs(ones(3),'some text',pi)
Number of input arguments: 3
 
varargin{1} =
 
     1     1     1
     1     1     1
     1     1     1

 
 
varargin{2} =
 
some text
 
 
varargin{3} =
 
    3.1416

 

이름이 definedAndVariableNumInputs.m인 파일에, 두 개의 입력값을 기본으로 받고 추가 개수의 입력값을 허용하는 함수를 정의합니다.

type definedAndVariableNumInputs
function definedAndVariableNumInputs(X,Y,varargin)
    disp("Total number of input arguments: " + nargin)
    
    formatSpec = "Size of varargin cell array: %dx%d";
    str = compose(formatSpec,size(varargin));
    disp(str)

end

여러 개의 입력값을 포함한 함수를 호출합니다.

definedAndVariableNumInputs(7,pi,rand(4),datetime('now'),'hello')
Total number of input arguments: 5
Size of varargin cell array: 1x3

2개의 입력값을 포함하여 함수를 호출합니다. varargin은 빈 셀형 배열입니다.

definedAndVariableNumInputs(13,42)
Total number of input arguments: 2
Size of varargin cell array: 0x0

이름이 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)

Figure contains an axes object. The axes object contains an object of type line.

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

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

Figure contains an axes object. The axes object contains an object of type line.

확장 기능

버전 내역

R2006a 이전에 개발됨