VARARGOUT Variable Output Arguments

Section: Functions and Scripts

Usage

FreeMat functions can return a variable number of output arguments by setting the last argument in the argument list to varargout. This special keyword indicates that the number of return values is variable. The general syntax for a function that returns a variable number of outputs is
  function [out_1,...,out_M,varargout] = fname(in_1,...,in_M)

The function is responsible for ensuring that varargout is a cell array that contains the values to assign to the outputs beyond out_M. Generally, variable output functions use nargout to figure out how many outputs have been requested.

Example

This is a function that returns a varying number of values depending on the value of the argument.

     varoutfunc.m
function [varargout] = varoutfunc
  switch(nargout)
    case 1
      varargout = {'one of one'};
    case 2
      varargout = {'one of two','two of two'};
    case 3
      varargout = {'one of three','two of three','three of three'};
  end

Here are some examples of exercising varoutfunc:

--> [c1] = varoutfunc
c1 = 
one of one
--> [c1,c2] = varoutfunc
c1 = 
one of two
c2 = 
two of two
--> [c1,c2,c3] = varoutfunc
c1 = 
one of three
c2 = 
two of three
c3 = 
three of three