Main Content

varargout

可変長の出力引数の一覧

構文

説明

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

関数を実行した場合、varargout は 1 行 N 列の cell 配列となり、N は明示的に宣言された出力の後に要求された出力の数を表します。関数内で、varargout は初期化されていない変数であり、事前に割り当てられません。

すべて展開する

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 次元の配列を指定してこの関数を呼び出し、3 つの出力を要求します。

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

     4     5     2

rows = 4
cols = 5

4 次元の配列を指定してもう一度この関数を呼び出し、4 つの出力を要求します。このとき、この関数は 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 に対してこの関数をもう一度呼び出し、1 つの出力を要求します。ここで、この関数は A の各次元を返しますが、varargout は返しません。

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

拡張機能

バージョン履歴

R2006a より前に導入