## VARARGIN Variable Input Arguments

Section: Functions and Scripts

### Usage

FreeMat functions can take a variable number of input arguments by setting the last argument in the argument list to `varargin`. This special keyword indicates that all arguments to the function (beyond the last non-`varargin` keyword) are assigned to a cell array named `varargin` available to the function. Variable argument functions are usually used when writing driver functions, i.e., functions that need to pass arguments to another function. The general syntax for a function that takes a variable number of arguments is

      function [out_1,...,out_M] = fname(in_1,..,in_M,varargin)

Inside the function body, `varargin` collects the arguments to `fname` that are not assigned to the `in_k`.

### Example

Here is a simple wrapper to `feval` that demonstrates the use of variable arguments functions.

         wrapcall.m
    function wrapcall(fname,varargin)
      feval(fname,varargin{:});

Now we show a call of the `wrapcall` function with a number of arguments

    --> wrapcall('printf','%f...%f\n',pi,e)
    3.141593...2.718282

A more serious driver routine could, for example, optimize a one dimensional function that takes a number of auxilliary parameters that are passed through `varargin`.