可変長の出力のサポート
この例では、varargout を使って可変長の出力引数を返す関数を定義する方法を示します。出力 varargout は関数出力が含まれた cell 配列で、各出力は別々のセルに入っています。
magicfill.m というファイルに関数を作成し、要求された出力ごとに魔方陣を代入します。
function varargout = magicfill nOutputs = nargout; varargout = cell(1,nOutputs); for k = 1:nOutputs varargout{k} = magic(k); end
中かっこ {} を使ったインデックスでセルの内容を更新します。
magicfill を呼び出し、3 つの出力を要求します。
[first,second,third] = magicfill
first =
1
second =
1 3
4 2
third =
8 1 6
3 5 7
4 9 2MATLAB® は、varargout 配列の順序に従って各出力に値を代入します。たとえば、first == varargout{1} のようになります。
varargout は出力引数リストに単独で使用することができ、次のように出力のリストの最後に指定することもできます。
function [x,y,varargout] = myfunction(a,b)
この場合、varargout{1} は関数から返される 3 番目の出力に対応し、nargout によって length(varargout) + 2 が返されます。