Main Content

varargin

可変長の入力引数のリスト

構文

説明

varargin は、任意の数の入力引数を関数で受け入れ可能にする関数定義ステートメントの入力変数です。小文字を使用して、varargin を指定します。明示的に宣言された任意の入力の後に、varargin を最後の入力引数として含めます。

関数を実行した場合、varargin は 1 行 N 列の cell 配列となり、N は明示的に宣言された入力の後に関数が受け取る入力の数を表します。関数が、明示的に宣言された入力の後に入力を受け取らない場合、varargin は空の cell 配列となります。

すべて展開する

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 というファイルに、2 つの入力を想定し、さらに任意の数の追加入力も受け入れる関数を定義します。

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 は空の cell 配列になります。

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

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する