function [c,tc]=v_melcepst(s,fs,w,nc,p,n,inc,fl,fh)
这个函数有多个输入参数,但我只想指定nc
参数的值。
在 Python 中,我可以轻松地做类似的事情v_melcepst(nc=13)
,但我找不到 MATLAB 的等价物。
这在 MATLAB 中是不可能的吗?我必须传递默认值吗?
function [c,tc]=v_melcepst(s,fs,w,nc,p,n,inc,fl,fh)
这个函数有多个输入参数,但我只想指定nc
参数的值。
在 Python 中,我可以轻松地做类似的事情v_melcepst(nc=13)
,但我找不到 MATLAB 的等价物。
这在 MATLAB 中是不可能的吗?我必须传递默认值吗?
这在 MATLAB 中确实是不可能的。参数是连续的,由它们在参数列表中的位置标识。
如果您v_melcepst
自己编写函数,则可以重写它以接受“名称/值对”,这是 MATLAB 中执行命名参数的标准方式。在这个系统中,两个参数组一起作为单个命名参数工作。您可以将该函数称为
[c,tc] = v_melcepst('nc',nc);
您可以使用旧inputParser
类(在 R2007a 中引入)或使用新的函数参数块(在 R2019b 中引入)来实现这一点。
基本上,做类似的事情
function out = my_func(a,varargin)
if nargin == 1
b = 2; % Your default value
elseif nargin == 2
b = varargin{1};
end
请注意,上述内容确实意味着您必须具有固定的输入参数顺序。在这种情况下,任何在函数声明中显式命名的参数a
都必须存在,并且其中的任何内容都varargin
必须按设置顺序排列,例如,您可以添加 a c = varargin{2}
,然后您不能在不设置的c
情况下进行设置b
。
如果您希望能够提供类似 Python 的输入参数,即不管顺序如何,您需要名称-值对。这是通过 完成的inputParser
,正如Cris Luengo 的回答中所建议的那样