可能重复:
Matlab中的默认参数
我有一个函数,大约有7个参数要传递.其中3个是强制性的,其余4个是可选参数.我想只传递前3个和最后一个参数.我该怎么做呢?
我们假设函数是:function [...] = fun(a,b,c,d,e,f,g)
a,b,c - 所需的输入.
d,e,f,g - 可选输入.
我想打电话给乐趣并传递a,b,c和g的值.
在R中,我可以用非常简洁的方式指定它:fun(a = 1,b = 4,c = 5,g = 0);
matlab中的等效语法是什么?
不幸的是,没有办法做到这一点.您必须为您不想传递的参数显式传递空值,并且需要在函数中检查该条件,以查看是否已传递参数,以及它是否为空.像这样的东西:
function fun(a, b, c, d, e, f, g)
if nargin<3
error('too few parameters');
end
if nargin<4 || isempty(d)
d = default_value;
end
% and so on...
end
% call
fun(a, b, c, [], [], g);
Run Code Online (Sandbox Code Playgroud)
最后,将可选参数收集到一个结构中并检查其字段可能更容易:
function fun(a, b, c, opt)
if nargin<3
error('too few parameters');
end
if nargin>3
if ~isfield(opt, 'd')
opt.d = default_value;
end
end
end
% call
opt.g = g;
fun(a, b, c, opt);
Run Code Online (Sandbox Code Playgroud)
调用该函数更容易,您不必指定空参数.