MATLAB 函数中的变量参数对
Variable argument pairs in MATLAB functions
我正在尝试开发一个包含多个参数的函数。为了尽可能健壮,我希望能够按如下方式调用我的函数:
foo( x, y, z, 'OptionalArg1', bar, 'OptionalArg2', blah, 'OptionalArg3', val )
我希望我的函数足够健壮,能够以任意顺序包含这些参数的任意组合。如果未提供参数,我还需要能够设置默认值。有没有在 MATLAB 中执行此操作的标准方法?
最好的方法是使用 inputParser
class 和 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
,并为每个新的 opt
添加一个 switch
。
但是 inputParser
使用起来更简单,也更清晰。
我正在尝试开发一个包含多个参数的函数。为了尽可能健壮,我希望能够按如下方式调用我的函数:
foo( x, y, z, 'OptionalArg1', bar, 'OptionalArg2', blah, 'OptionalArg3', val )
我希望我的函数足够健壮,能够以任意顺序包含这些参数的任意组合。如果未提供参数,我还需要能够设置默认值。有没有在 MATLAB 中执行此操作的标准方法?
最好的方法是使用 inputParser
class 和 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
,并为每个新的 opt
添加一个 switch
。
但是 inputParser
使用起来更简单,也更清晰。