Matlab中的函數句柄@
文章鏈接: 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