簡體   English   中英

如何選擇將一個參數的值傳遞給具有多個輸入的 MATLAB function?

[英]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 中引入)來實現它。

查看有關vararginnargin的文檔。

基本上,做類似的事情

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM