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
函数,则可以将其重写为accept"名称/值对";,MATLAB中执行命名参数的标准方法。在这个系统中,由两个参数组成的组一起作为一个命名的参数工作。您可以将该函数称为
[c,tc] = v_melcepst('nc',nc);
您可以使用旧的inputParser
类(在R2007a中引入(或使用新的函数参数块(在R2019b中新增(来实现此功能。
查看关于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
中的任何参数都必须按照设置的顺序,例如,您可以添加c = varargin{2}
,然后在不设置b
的情况下无法设置c
。
如果您希望能够提供类似Python的输入参数,即无论顺序如何,都需要名称-值对。这是通过inputParser
完成的,正如Cris Luengo的回答中所建议的那样