在Matlab中仅为某些函数变量提供默认值

时间:2014-04-25 20:21:53

标签: matlab function argument-passing

我做了一个Matlab函数

function foo(argone, argtwo)

如果仅使用一个参数或甚至零参数调用函数,函数的开头允许对这些变量进行默认选择

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

我们可以将该功能称为

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

但是如何才能将默认值赋予argone?

如果使用

调用函数
foo(~, myargtwo)

没有使用默认值; argone获取空值(不是默认值)

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

另一种方法是包括处理空输入的选项:

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

然后其中任何一个都应该有效:

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

答案 1 :(得分:0)

语言本身不支持此类输入。常见的解决方法是使用参数值对。

Usange将是

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

在您的函数中,您必须使用varargin和input parser