最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

varargout

可変長の出力引数の一覧

構文

説明

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

関数を実行した場合、varargout は 1 行 N 列の cell 配列となり、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 次元の配列を指定してこの関数を呼び出し、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

作業フォルダーのファイルで、赤のラインをプロットする関数 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 より前に導入