代码之家  ›  专栏  ›  技术社区  ›  Iliketoproveit

MATLAB函数中的变量参数对

  •  1
  • Iliketoproveit  · 技术社区  · 6 年前

    我正在尝试开发一个包含多个参数的函数。为了尽可能健壮,我希望能够按如下方式调用我的函数:

    foo( x, y, z, 'OptionalArg1', bar, 'OptionalArg2', blah, 'OptionalArg3', val )
    

    我希望我的函数足够健壮,能够以任何顺序包含这些参数的任何组合。如果没有提供参数,我还需要能够设置默认值。在MATLAB中有没有标准的方法可以做到这一点?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Ander Biguri    6 年前

    最好的方法是使用 inputParser 类,具有 addParameters 作用

    简而言之,您的代码如下所示:

    function foo(x,y,z,varargin)
    
    p=inputParser;
    
    validationFcn=@(x)isa(x,'double')&&(x<5); % just a random example, add anything
    addParameter(p,'OptionalArg1',defaultvalue, validationFcn);
    % same for the other 2, with your conditions
    
    %execute
    parse(p,varargin{:});
    
    % get the variables
    bar=p.Results.OptionalArg1;
    % same for the other 2
    
    
    % foo
    

    或者,你可以像我一样写你自己的( example here )。那里的代码很容易修改,以便拥有自己的输入解析器(您只需更改 opts ,并添加 switch 对于每个新的 opt

    但是 输入解析器 使用起来更简单、更清晰。