This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Variable-length input argument list





varargin is an input variable in a function definition statement that enables the function to accept any number of input arguments. Specify varargin using lowercase characters, and include it as the last input argument after any explicitly declared inputs.

When the function executes, varargin is a 1-by-N cell array, where N is the number of inputs that the function receives after the explicitly declared inputs. However, if the function receives no inputs after the explicitly declared inputs, then varargin is an empty cell array.


collapse all

Define a function in a file named acceptVariableNumInputs.m that accepts a variable number of inputs and displays the values of each input.

type acceptVariableNumInputs
function acceptVariableNumInputs(varargin)
    disp("Number of input arguments: " + nargin)

Call the function with several inputs.

acceptVariableNumInputs(ones(3),'some text',pi)
Number of input arguments: 3
ans{1} =
     1     1     1
     1     1     1
     1     1     1

ans{2} =
some text
ans{3} =


Define a function in a file named definedAndVariableNumInputs.m that expects two inputs and accepts an additional number of inputs.

type definedAndVariableNumInputs
function definedAndVariableNumInputs(X,Y,varargin)
    disp("Total number of input arguments: " + nargin)
    formatSpec = "Size of varargin cell array: %dx%d";
    str = compose(formatSpec,size(varargin));


Call the function with several inputs.

Total number of input arguments: 5
Size of varargin cell array: 1x3

Call the function with two inputs. varargin is an empty cell array.

Total number of input arguments: 2
Size of varargin cell array: 0x0

Define a function in a file named variableNumInputAndOutput.m that accepts a variable number of inputs and outputs.

type variableNumInputAndOutput
function varargout = variableNumInputAndOutput(varargin)
    disp(['Number of provided inputs: ' num2str(length(varargin))])
    disp(['Number of requested outputs: ' num2str(nargout)])
    for k = 1:nargout
        varargout{k} = k;

Call the function with two inputs and three outputs.

[d,g,p] = variableNumInputAndOutput(6,'Nexus')
Number of provided inputs: 2
Number of requested outputs: 3
d = 1
g = 2
p = 3

Call the function again with no inputs or outputs.

Number of provided inputs: 0
Number of requested outputs: 0

In a file in your working folder, create a wrapper to the plot function that plots a red line. The redplot function accepts a variable-length input argument list and returns a variable-length output argument list. It sets the line color to red, and forwards other input values to the plot function. This function wrapper enables you to pass redplot the same inputs as plot and not specify that the line color is red.

type redplot.m
function varargout = redplot(varargin)
    [varargout{1:nargout}] = plot(varargin{:},'Color',[1,0,0]);

Use redplot to create a line plot.

x = 0:pi/100:2*pi;
y = sin(x);

Call redplot again, and specify input and output arguments to forward to the plot function.

h = redplot(x,y,'Marker','o','MarkerEdgeColor','green'); 

Introduced before R2006a