如何选择将一个参数的值传递给具有多个输入的 MATLAB 函数?

How to choose pass value to one parameter to a MATLAB function with multiple inputs?

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 函数,您可以重写它以接受“name/value 对”,这是 MATLAB 中命名参数的标准方式。在这个系统中,两个参数组作为一个命名参数一起工作。您可以将该函数称为

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

您可以使用旧的 inputParser class (introduced in R2007a), or with the new function arguments block(R2019b 中的新功能)实现此功能。

查看 varargin and 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},然后你不能设置c而不设置b

如果你希望能够给出 Python-like 个输入参数,即不管顺序如何,你需要 name-value 对。这是通过 inputParser 完成的,如

中所建议