參考文獻
https://ww2.mathworks.cn/help/matlab/matlab_prog/creating-a-function-handle.htmlhtml
函數句柄是一種存儲指向函數的關聯關係的 MATLAB® 數據類型。 間接調用函數使在調用該函數時無需考慮調用位置。 函數句柄的典型用法包括:git
將一個函數傳遞到另外一個函數(一般稱爲功能函數)。例如,將函數傳遞到 integral 和 fzero 等積分和優化函數。github
指定回調函數。例如,響應 UI 事件或與數據採集硬件交互的回調。數組
構造之內聯方式定義而非存儲在程序文件(匿名函數)中的函數的句柄。函數
從主函數外調用局部函數。學習
f = @myfunction;
.function y = computeSquare(x) y = x.^2; end 建立句柄並調用該函數以計算 4 的平方。 f = @computeSquare; a = 4; b = f(a) b = 16
h = @ones; a = h() a = 1 若是不使用括號,則該賦值會建立另外一個函數句柄。 a = h a = @ones
q = integral(f,0,1);
函數句柄會存儲其絕對路徑,所以有效句柄能夠從任意位置調用該函數。沒必要在建立句柄時指定函數路徑,只需指定函數名。優化
名稱長度 - 函數名稱(包括包名稱和類名稱)的每一個部分都必須小於 namelengthmax 指定的數值。不然 MATLAB 會截斷該名稱的後面一部分。code
範圍 - 在您建立句柄時,該函數必須處於範圍內。所以,該函數必須在 MATLAB 路徑上或位於當前文件夾中。或者,對於局部或嵌套函數句柄,這些函數必須位於當前文件中。htm
優先級 - 當多個函數採用同一名稱時,MATLAB 會使用與調用函數相同的優先級規則來定義函數句柄。事件
重載 - 若是指定的函數在非基礎 MATLAB 類的類中重載函數,那麼在構造該函數的句柄時,函數不會與該函數句柄關聯。相反,MATLAB 會考慮輸入參數並在計算時肯定要調用的實現。
sqr = @(n) n.^2; x = sqr(3) x = 9
C = {@sin, @cos, @tan}; C{2}(pi) ans = -1 或使用結構體數組: S.a = @sin; S.b = @cos; S.c = @tan; S.a(pi/2) ans = 1