What are all the ways to use name-value arguments in MATLAB code?

17 views (last 30 days)
I want to accept name-value arguments in my matlab code. Also, some of the name-value arguments may be optional and may take default values specified by me.

Answers (1)

Ayush
Ayush on 21 Aug 2025
Hi @Nitu,
There are various ways for implementing name-value arguments.
Some of the ways are as follows:
  • options argument
function res = func(a, b, options)
arguments
a %constraints of a
b %constraints of b
options.c = 1 % default value
options.d = 1 % default value
end
disp(a);disp(b);disp(options.c);disp(options.d);
end
Now, user can use the following syntaxes:
func(1,2);
func(1,2,'c',4); % a=1 b=2 c=4 (default value) d=1 (default value)
func(1,2,'d',3); % a=1 b=2 c=1 (default value) d=3
func(1,2,'c',3,'d',5); % a=1 b=2 c=3 d=5
  • varargin
function res = func(a, b, varargin)
% access the arguments
for ind=1:2:numel(varargin)
name=varargin{ind};
val=varargin{ind+1};
% do operations on these name-value arguments
end
% for pre-defined name-value arguments
% you can use input parser aswell
inp = inputParser;
% adding parameters
addParameter(inp, 'argName1', defaultValue, validationFcn);
addParameter(inp, 'argName2', defaultValue, validationFcn);
addParameter(inp, 'argName3', defaultValue, validationFcn);
% parse the parameters
parse(inp, varargin{:});
% Access
arg1 = inp.Results.argName1;
arg2 = inp.Results.argName2;
end
Now, user syntaxes:
func(1, 2, 'a', 2); % name-value argument : a=2
func(1, 2, 'c', 3, 'd', 4); % name-value arguments : c=3 and d=4
So, these were some ways to implement (optional) name-value arguments. You can read more about them here:https://www.mathworks.com/help/matlab/matlab_prog/validate-name-value-arguments.html
Hope it helps!
  1 Comment
DGM
DGM on 21 Aug 2025
Edited: DGM on 21 Aug 2025
Nowhere did you actually demonstrate name=value syntax, and the code you pasted is not even complete enough to run or answer the question.
% let's rename everything and reorder the script and functions
% so that it can at least be run
func1(1,2);
1 2 1 1
func1(1,2,'c',4); % a=1 b=2 c=4 (default value) d=1 (default value)
1 2 4 1
func1(1,2,'d',3); % a=1 b=2 c=1 (default value) d=3
1 2 1 3
func1(1,2,'c',3,'d',5); % a=1 b=2 c=3 d=5
1 2 3 5
func2(1, 2, 'a', 2); % name-value argument : a=2
Unrecognized function or variable 'defaultValue'.

Error in solution>func2 (line 35)
addParameter(inp, 'argName1', defaultValue, validationFcn);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
func2(1, 2, 'c', 3, 'd', 4); % name-value arguments : c=3 and d=4
function res = func1(a, b, options)
arguments
a %constraints of a
b %constraints of b
options.c = 1 % default value
options.d = 1 % default value
end
% this displays positional arguments and key-value pairs
disp(a);disp(b);disp(options.c);disp(options.d);
% but nowhere is the output argument assigned any value
end
function res = func2(a, b, varargin)
% access the arguments
% why are we manually parsing varargin if we're using inputParser?
% _neither_ of these two uses of varargin actually do anything
for ind=1:2:numel(varargin)
name=varargin{ind};
val=varargin{ind+1};
% do operations on these name-value arguments
end
% for pre-defined name-value arguments
% you can use input parser aswell
inp = inputParser;
% adding parameters
% obviously this isn't valid
% none of these argument names, defaults, or functions
% are defined or relevant to the example
addParameter(inp, 'argName1', defaultValue, validationFcn);
addParameter(inp, 'argName2', defaultValue, validationFcn);
addParameter(inp, 'argName3', defaultValue, validationFcn);
% parse the parameters
parse(inp, varargin{:});
% Access
% these aren't used for anything, and the output argument
% is never assigned any value.
arg1 = inp.Results.argName1;
arg2 = inp.Results.argName2;
end

Sign in to comment.

Categories

Find more on Argument Definitions in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!