如何选择将一个参数的值传递给具有多个输入的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函数,则可以将其重写为accept"名称/值对";,MATLAB中执行命名参数的标准方法。在这个系统中,由两个参数组成的组一起作为一个命名的参数工作。您可以将该函数称为

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

您可以使用旧的inputParser类(在R2007a中引入(或使用新的函数参数块(在R2019b中新增(来实现此功能。

查看关于vararginnargin的文档。

基本上,做一些类似的事情

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

最新更新