簡體   English   中英

Matlab:從函數外部檢測函數句柄的輸入自變量數量

[英]Matlab: Detect number of input arguments for function handle from outside of the function

我從一個變量的符號函數開始,計算1到N階的符號導數,然后將這些符號函數轉換為函數句柄並將該函數句柄存儲在單元格數組中。 然后,我使用循環在相同的輸入值處評估每個函數句柄。 我的問題是,導數之一可能是常數(高階導數當然是零)。 在嘗試為每個函數提供輸入時,我遇到了“輸入參數過多”錯誤。 我希望能夠事先檢查函數句柄是否為常量,這樣可以避免錯誤,但是我不知道該怎么做。

如果有一個小的工作示例有幫助,我提供以下內容

symVar = sym('symVar');
startFunc = symVar^4 + symVar^3 + symVar^2;
derivesCell = cell(5);
for J=1:5
    derivesCell(J) = {matlabFunction(diff(startFunc,symVar,J))};
end

cumSum = 0;
evalPoint = 2;
for J=1:5
    cumSum = cumSum + derivesCell{J}(evalPoint);
end

執行產生“使用symengine> @()2.4e1輸入錯誤。”

tl; dr:您可以使用nargin來做到這nargin

>> nargin(derivesCell{5})
ans =
     0

>> nargin(derivesCell{3})
ans =
     1


說明:
大多數人都熟悉nargin在函數內部作為“特殊變量”的nargin ,但可以在函數定義的上下文之外使用,作為接受function_handle參數的函數,返回函數處理的輸入參數的數量需要。 從文檔中:

NARGIN(FUN)返回M文件函數FUN的聲明輸入數。 如果函數的輸入參數數目可變,則參數數目為負。 FUN可以是映射到特定函數的函數句柄,也可以是包含該函數名稱的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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