This is machine translation

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

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.


Class: inputParser

Add optional positional argument to input parser scheme




addOptional(p,argName,default) adds optional input, argName, to the input parser scheme of inputParser object, p. When the inputs that you are checking do not include a value for this optional input, the input parser assigns the default value to the input.

addOptional(p,argName,default,validationFcn) specifies a validation function for the input argument.

Input Arguments


Object of class inputParser.


String scalar or character vector that specifies the internal name for the input argument.

Arguments added with addOptional are positional. When you call a function with positional inputs:

  • Specify inputs in the same order that they are added into the input parser scheme.

  • Specify a value for the kth argument by assigning values for the first (k–1) arguments in the input scheme.


Default value for the input. This value can be of any data type.


Handle to a function that checks if the input argument is valid.

inputParser accepts two types of validation functions: functions that return true or false, and functions that pass or throw an error. Both types of validation functions must accept a single input argument.


expand all

Create an inputParser object and add an optional input named myinput with a default value of 0 to the input scheme.

p = inputParser;
argName = 'myinput';
default = 0;

Check whether an optional input named num with a default value of 1 is a numeric scalar greater than zero.

p = inputParser;
argName = 'num';
default = 1;
validationFcn = @(x) isnumeric(x) && isscalar(x) && (x > 0);

The syntax @(x) creates a handle to an anonymous function with one input.

Attempt to parse an invalid input, such as -1:

The value of 'num' is invalid. It must satisfy the function: @(x)isnumeric(x)&&isscalar(x)&&(x>0).

Create an inputParser object and define a validation function using validateattributes to test that optional input is numeric, positive, and even. Add the required input to the scheme.

p = inputParser;
argName = 'evenPosNum';
default = 1;
validationFcn = @(x) validateattributes(x,{'numeric'},...

Parse an input character vector. Parse will fail.

The value of 'evenPosNum' is invalid. Expected input to be one of these types:

double, single, uint8, uint16, uint32, uint64, int8, int16, int32, int64

Instead its type was char.

Parse an odd number. Parse will fail.

The value of 'evenPosNum' is invalid. Expected input to be even.

Parse an even, positive number. Parse will pass.



  • For optional string inputs, specify a validation function. Without a validation function, the input parser interprets valid string inputs as invalid parameter names and throws an error.

  • Use addOptional to add an individual argument into the input parser scheme. If you want to parse an optional name-value pair, use addParameter.

Introduced in R2007a

Was this topic helpful?