Alexandre Willame
Alexandre Willame

Reputation: 455

Giving default values to only some function variables in Matlab

I made a Matlab function

function foo(argone, argtwo)

The begining of the function allow to have default choices for those variables if the function is called only with one or even zero arguments

function foo(argone, argtwo)
if(~exist('argone','var'))
    argone = defaultargone;
end
if(~exist('argtwo', 'var'))
    argtwo = defaultargtwo;
end
... % Rest of the code

We can call the function as

foo()                   % Default values are assigned to argone and argtwo
foo(myargone)           % Default value given to argtwo
foo(myargone, myargtwo) % No default values are used

But how to be able to give default value to argone only?

If function is called with

foo(~, myargtwo)

no default values are used; argone get the null value (that is not the default value)

Thank you for your help

Upvotes: 0

Views: 64

Answers (2)

Daniel
Daniel

Reputation: 36710

The language itself does not support such inputs. A common workaround uses parameter value pairs.

Usange would be

foo('myargone',1, 'myargtwo',2)
foo('myargtwo',3)
foo('myargone',4)

In your function, you have to use varargin and the input parser

Upvotes: 0

nkjt
nkjt

Reputation: 7817

An alternate way would be to include the option for handling an empty input:

function foo(argone, argtwo)
if ~exist('argone','var')||isempty(argone)
    argone = defaultargone;
end
if ~exist('argtwo','var')||isempty(argtwo)
    argtwo = defaultargtwo;
end

Then any of these should work:

foo()
foo([],[]) 
foo(argone)
foo([], argtwo)

Upvotes: 1

Related Questions