Support Variable Number of Outputs - MATLAB & Simulink (original) (raw)
Main Content
This example shows how to define a function that returns a variable number of output arguments using varargout
. Output varargout
is a cell array that contains the function outputs, where each output is in its own cell.
Create a function in a file named magicfill.m
that assigns a magic square to each requested output.
function varargout = magicfill nOutputs = nargout; varargout = cell(1,nOutputs);
for k = 1:nOutputs varargout{k} = magic(k); end
Indexing with curly braces {}
updates the contents of a cell.
Call magicfill
and request three outputs.
[first,second,third] = magicfill
first = 1
second = 1 3 4 2
third = 8 1 6 3 5 7 4 9 2
MATLABĀ® assigns values to the outputs according to their order in the varargout
array. For example, first == varargout{1}
.
You can use varargout
alone in an output argument list, or at the end of the list of outputs, such as
function [x,y,varargout] = myfunction(a,b)
In this case, varargout{1}
corresponds to the third output that the function returns, and nargout
returns length(varargout) + 2
.