我做了一个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获取空值(不是默认值)
感谢您的帮助
答案 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