1

function [c,tc]=v_melcepst(s,fs,w,nc,p,n,inc,fl,fh)

这个函数有多个输入参数,但我只想指定nc参数的值。

在 Python 中,我可以轻松地做类似的事情v_melcepst(nc=13),但我找不到 MATLAB 的等价物。

这在 MATLAB 中是不可能的吗?我必须传递默认值吗?

4

2 回答 2

4

这在 MATLAB 中确实是不可能的。参数是连续的,由它们在参数列表中的位置标识。

如果您v_melcepst自己编写函数,则可以重写它以接受“名称/值对”,这是 MATLAB 中执行命名参数的标准方式。在这个系统中,两个参数组一起作为单个命名参数工作。您可以将该函数称为

 [c,tc] = v_melcepst('nc',nc);

您可以使用旧inputParser类(在 R2007a 中引入)或使用新的函数参数块(在 R2019b 中引入)来实现这一点。

于 2020-10-28T14:53:08.770 回答
2

检查 和 上的varargin文档nargin

基本上,做类似的事情

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 的回答中所建议的那样

于 2020-10-28T14:53:25.303 回答