在MATLAB中有选择地指定可选功能参数

时间:2012-12-05 08:52:08

标签: matlab

  

可能重复:
  Default Arguments in Matlab

我有一个函数,要传递大约7个参数。其中3个是强制性的,其余4个是可选参数。我想只传递前3个和最后一个参数。我该怎么做?

让我们说这个功能是: 函数[...] = fun(a,b,c,d,e,f,g)

a,b,c - 所需的输入。

d,e,f,g - 可选输入。

我想为a,b,c和g调用fun并传递值。

在R中,我可以用非常简洁的方式指定它: 有趣(a = 1,b = 4,c = 5,g = 0);

matlab中的等效语法是什么?

2 个答案:

答案 0 :(得分:5)

不幸的是,没有办法做到这一点。您必须为您不想传递的参数显式传递空值,并且需要在函数中检查该条件,以查看是否已传递参数,以及它是否为空。像这样:

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);

调用该函数更容易,您不必指定空参数。

答案 1 :(得分:3)

在MATLAB中执行此操作的惯用方法是使用参数值对作为可选参数,或者使用指定了可选字段的结构。一种方法是使用inputparser助手类。