首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MATLAB中有选择地指定可选函数参数

在MATLAB中有选择地指定可选函数参数
EN

Stack Overflow用户
提问于 2012-12-05 08:52:07
回答 2查看 6.1K关注 0票数 3

可能重复: 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中的等价语法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-05 09:21:41

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

代码语言:javascript
复制
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);

最后,可以更容易地将可选参数收集到一个结构中并检查其字段:

代码语言:javascript
复制
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);

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

票数 5
EN

Stack Overflow用户

发布于 2012-12-05 11:35:32

在MATLAB中这样做的惯用方法是对可选参数使用参数-值对,或者使用带有指定可选字段的结构。这样做的一种方法是使用输入解析器助手类。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13719346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档