【问题标题】:Specifying optional function parameters selectively in MATLAB [duplicate]在MATLAB中选择性地指定可选函数参数[重复]
【发布时间】:2012-12-05 08:52:07
【问题描述】:

可能重复:
Default Arguments in Matlab

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

假设函数是: 函数[...] = fun(a, b, c, d, e, f, g)

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

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

我想调用 fun 并传递 a、b、c 和 g 的值。

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

matlab中的等价语法是什么?

【问题讨论】:

    标签: matlab


    【解决方案1】:

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

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

    函数调用更方便,不用指定空参数。

    【讨论】:

    • 哦,太好了!我不知道这可以做到:fun(a, b, c, [], [], g);这样就足够了。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      相关资源
      最近更新 更多