可能重复: Matlab中的默认参数
我有一个函数,大约有7个参数要传递。其中3项是强制性的,其余4项是可选参数。我只想传递前3和最后一个参数。我该怎么做?
让我们说,功能是:功能.=乐趣(a,b,c,d,e,f,g)
a,b,c-所需输入。
d,e,f,g-可选输入。
我想调用乐趣并传递a,b,c和g的值。
在R中,我可以非常巧妙地指定这一点,比如:a=1、b=4、c=5、g=0;
matlab中的等价语法是什么?
发布于 2012-12-05 09:21:41
不幸的是,没有办法做到这一点。您必须为不想传递的参数显式传递空值,并且需要在函数中检查该条件,以查看参数是否已被传递,以及参数是否为空。就像这样:
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);最后,可以更容易地将可选参数收集到一个结构中并检查其字段:
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);调用该函数更容易,并且不必指定空参数。
发布于 2012-12-05 11:35:32
在MATLAB中这样做的惯用方法是对可选参数使用参数-值对,或者使用带有指定可选字段的结构。这样做的一种方法是使用输入解析器助手类。
https://stackoverflow.com/questions/13719346
复制相似问题