[英]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)
這個function有多個輸入參數,但我只想指定nc
參數的值。
在 Python 中,我可以輕松地執行類似v_melcepst(nc=13)
的操作,但我找不到 MATLAB 的等效項。
這在 MATLAB 中是不可能的嗎? 我必須傳遞默認值嗎?
這在 MATLAB 中確實是不可能的。arguments 是連續的,由它們在參數列表中的位置標識。
如果您自己編寫了v_melcepst
function,則可以重寫它以接受“名稱/值對”,這是 MATLAB 中執行命名 arguments 的標准方法。在這個系統中,兩個 arguments 的組一起作為單個命名參數工作。 您可以將 function 稱為
[c,tc] = v_melcepst('nc',nc);
您可以使用舊的inputParser
class(在 R2007a 中引入)或新的function arguments 塊(在 R2019b 中引入)來實現它。
基本上,做類似的事情
function out = my_func(a,varargin)
if nargin == 1
b = 2; % Your default value
elseif nargin == 2
b = varargin{1};
end
請注意,上面的內容確實意味着您必須具有固定的輸入順序 arguments。在 function 聲明中明確命名a
任何 arguments,在這種情況下,始終必須存在,並且varargin
中的任何內容都必須按照設定的順序,例如,您可以添加一個c = varargin{2}
,那么您不能在不設置b
的情況下設置c
。
如果您希望能夠提供類似 Python 的輸入參數,即不管順序如何,您都需要名稱-值對。 正如Cris Luengo 的回答中所建議的那樣,這是通過inputParser
完成的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.