【问题标题】:How to choose pass value to one parameter to a MATLAB function with multiple inputs?如何选择将一个参数的值传递给具有多个输入的 MATLAB 函数?
【发布时间】:2020-10-28 14:22:26
【问题描述】:

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

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

在 Python 中,我可以轻松地执行 v_melcepst(nc=13) 之类的操作,但我找不到 MATLAB 的等价物。

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

【问题讨论】:

    标签: matlab function input-parameters


    【解决方案1】:

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

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

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

    您可以使用旧的 inputParser 类(在 R2007a 中引入)或新的 function arguments block(在 R2019b 中引入)来实现这一点。

    【讨论】:

      【解决方案2】:

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

      如果您希望能够提供类似 Python 的输入参数,即不管顺序如何,您需要名称-值对。这是通过inputParser 完成的,正如Cris Luengo's answer 中所建议的那样

      【讨论】:

        猜你喜欢
        • 2014-12-04
        • 2012-02-18
        • 1970-01-01
        • 2017-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-13
        • 1970-01-01
        相关资源
        最近更新 更多