使用mutiple" addOptional"在函数定义

时间:2017-03-09 18:31:25

标签: matlab

如何在函数定义中使用多个addOptionaladdOptional是添加位置参数。所以我想用它 以下列方式。

  • 首先我定义函数并使用两个 addOptional那里。
  • 然后我想我可以打电话给以下 两种方式: myfunc('Jim', 12)myfunc('Jim', 12, 'cm')。 但是,后者会抛出一个错误:
      

    论证' cm'是一个字符串,与任何参数名称都不匹配。它未能验证参数'单位'

但是我可以使用myfunc('Jim', 12, 'units', 'cm'),这似乎是第二个addOptional表现为addParameter,不再像位置参数那样。我犯的错误是什么?我是否误解了addOptional的某些内容?非常感谢!

以下是myfunc()的定义:

  function myfunc(name, varargin)

  par = inputParser;

  defaultHeight = 1;
  defaultUnits = 'inches';

  addRequired(par, 'name', @ischar);
  addOptional(par, 'height', defaultHeight, @isnumeric);
  addOptional(par, 'units', defaultUnits);

  parse(par, name, varargin{:});

  disp(par.Results)

我发现如果位置参数不是文字字符串(可能在helpdoc中称为字符向量,则whos显示的类型为char,例如{{1 ,),没有问题。例如,使用'any words'定义为

myfunc('Jim', 3, 4)

MATLAB help doc并未提及有关其他位置参数的数据类型限制的任何内容。这是否意味着这是一个错误?

信息

  • MATLAB:2016a
  • OS:OS X Sierra

0 个答案:

没有答案