可変長の出力のサポート
この例では、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 2
MATLAB® は、varargout
配列の順序に従って各出力に値を代入します。たとえば、first == varargout{1}
のようになります。
varargout
は出力引数リストに単独で使用することができ、次のように出力のリストの最後に指定することもできます。
function [x,y,varargout] = myfunction(a,b)
この場合、varargout{1}
は関数から返される 3 番目の出力に対応し、nargout
によって length(varargout) + 2
が返されます。