File Exchange

image thumbnail

Optional function arguments

version 3.0 (11.6 KB) by

Optional function arguments with default values: optndfts

7 Downloads

Updated

View License

Optional function arguments: optndfts
Allows optional arguments to be specified as name value pairs, and
default values given for those augments not specified e.g.
function strt=demo1(arg1,varargin) % insert values to replace defaults
strt=optndfts(varargin,'aa',1,'bb',2,'cc',3); % default values
return % optndfts returns a struct
end
demo1(123,'bb',22,'aa',11)
ans =
aa: 11
bb: 22
cc: 3
Result is a struct, varagin input values can be list of name value pairs,
cell array of name value pairs, or a struct.
Also can allow for optional arguments that are not named:
function strt=demo2(arg1,varargin) % insert values to replace defaults
strt=optndfts(varargin,{'aa','bb'},'aa',1,'bb',2,'cc',3,'dd',4);
return % optndfts returns a struct
end
demo2(123,11,22,'dd',44)
ans =
aa: 11
bb: 22
cc: 3
dd: 44
demo2(123,11,'dd',44)
ans =
aa: 11
bb: 2
cc: 3
dd: 44
demo2(123,'dd',44)
ans =
aa: 1
bb: 2
cc: 3
dd: 44
A second output argument if present is a struct containing name value
pairs not given in the default values, these can be used to override
defaults for functions called within original function.
Functions selectfields and renamefields, with error messages suppressed,
can also be used to assist in passing options from an outer function
to nested functions (see doc selectfield, and doc renamefields).
Test files contain examples.
See doc optndfts

Comments and Ratings (3)

Bill Whiten

Test functions are prototype applications not complete functions, and contain warnings regarding missing components. The functions can all be run to see possible applications of the optndfts function.

Bill Whiten

Stephen Cobeldick: Code in first example in doc optndfts adjusted, semicolon removed as in file, thanks.
Other examples should be working ok.
The results of running the examples are in the files.
return is optional but not invalid, I regard it as good practice as return end clearly marks the end of code.

Stephen Cobeldick

@Bill Whiten: the examples you give in the function itself are not valid MATLAB code. For example:

% function optntest2(arg1,varargin) % varargin replaces defaults
% optn=optndfts(varargin,{'bb','aa'},'aa',1,'bb',2,'cc',3)
% return % optndfts returns a struct
% end

Does not return anything as you do not specify an output argument, so the description "optndfts returns a struct" is incorrect. Also the RETURN is totally superfluous: although it does not cause any error MATLAB does not require RETURN at the end of functions, and none of the examples in the MATLAB documentation show RETURN for that purpose:

https://www.mathworks.com/help/matlab/ref/function.html

You should pay careful attention to the mlint messages and editor warnings to fix basic mistakes like these ones, and always test your code before using it as an example and uploading it.

Updates

3.0

Reloaded

3.0

One example adjust to give output.

3.0

V3.0 is compatible with previous versions. Adds additional functionality for passing options to functions called within another function

2.0

v3.0 (2015-09-07) compatible with v2.0 and v1.0
Improved handling of cell arrays in optional arguments

2.0

v2.0 compatible with v1.0
Now includes optional initial unnamed arguments
Now includes second output for other name values pairs

2.0

Compatible with v1.0
Now includes optional initial unnamed arguments
Now includes second output for other name values pairs

MATLAB Release
MATLAB 8.5 (R2015a)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video