Matlab中的函數句柄@


Matlab中的函數句柄@

本系列文章由  @yhl_leo  出品,轉載請注明出處。 
文章鏈接:  http://blog.csdn.net/yhl_leo/article/details/50699990 

 


@是Matlab中的句柄函數的標志符,即間接的函數調用方法。

1 句柄函數

主要有兩種語法:

  • handle = @functionname
  • handle = @(arglist)anonymous_function

handle = @functionname:返回一個特別的Matlab函數句柄,它提供了一種間接訪問函數的方式,也被成為函數的函數(function functions),是一種標准的Matlab數據類型。在C/C++中,有個類似的用法稱為引用(使用標識符&),引用只是它綁定的對象的另一個名字,作用在應用上的所有操作事實上都會作用在該引用綁定的對象上。Matlab里句柄函數,與前面講得引用有些類似,我們通過語句handle = @functionname給名為functionname的函數取了個別名handle,也就是說你既可以用函數functionname實現你要實現的功能,也可以使用handle實現同樣的功能。在Python里,你大可直接用變量賦值的方式handle = functionname達到這一目的。

基本用法如下:

% .m 文件函數句柄 >>fh_mFile = @humps fh_mFile = @humps % 內置函數句柄 >>fh_builtin = @cos fh_builtin = @cos >>fh_builtin(pi) ans = -1

handle = @(arglist)anonymous_function:也稱為匿名函數,@左邊為一個函數句柄,@后定義了匿名函數的輸入參數(多個參數用逗號分隔開),最后一部分為匿名函數的表達式。基本用法如下:

>>sqr = @(x) x.^2 >>a = sqr([1, 2, 3]) a = 1 4 9

2 句柄處理函數

這里列舉四個常見的句柄處理函數,如下表:

函數 說明
functions 返回一個句柄的詳細信息
str2func 將一個函數名作為字符串傳遞給此函數,創建該函數的函數句柄
func2str 從一個函數句柄中提取函數名,對於內置函數或m文件函數句柄,返回函數的名稱,對於匿名函數,返回其表達式
structfun 將句柄結構體數組的每一個句柄函數的依次作用於數組,返回每個句柄函數的作用於數組的值

 
逐一給出示例:

>> functions(sqr)
ans = function: '@(x)x.^2' type: 'anonymous' file: '' workspace: {[1x1 struct]} >>fh2 = str2func('sqr') fh2 = @sqr >> func2str(fh2) ans = sqr >> func2str(sqr) ans = @(x)x.^2 >> S.a = @sin; S.b = @cos; S.c = @tan; >> structfun(@(x)x(linspace(1, 4, 3)), S, 'UniformOutput', false) ans = a: [0.8415 0.5985 -0.7568] b: [0.5403 -0.8011 -0.6536] c: [1.5574 -0.7470 1.1578]
版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/YhL_Leo/article/details/50699990

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM