本系列文章由
@yhl_leo
@
是matlab中的控制代碼函式的標誌符,即間接的函式呼叫方法。
主要有兩種語法:
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
49
這裡列舉四個常見的控制代碼處理函式,如下表:
函式說明
functions
返回乙個控制代碼的詳細資訊
str2func
將乙個函式名作為字串傳遞給此函式,建立該函式的函式控制代碼
func2str
從乙個函式控制代碼中提取函式名,對於內建函式或m
檔案函式控制代碼,返回函式的名稱,對於匿名函式,返回其表示式
structfun
將控制代碼結構體陣列的每乙個控制代碼函式的依次作用於陣列,返回每個控制代碼函式的作用於陣列的值
逐一給出示例:
>> functions(sqr)
ans =
function: '@(x)
x.^2'
type: 'anonymous'
file: ''
workspace:
>>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]
MATLAB函式控制代碼的小總結
函式控制代碼在matlab使用過程中經常涉及到,個人小小的彙總一下,有不足和錯誤之處還望大家多多包涵和指點補充 函式控制代碼的定義具體參見官方文件這裡就不多加敘述了 很多matlab內建函式使用時都需要涉及到函式控制代碼,像integral,fzero,fsolve等函式,這裡以integral為例...
matlab中函式的控制代碼是什麼意思?有什麼作用?
比定義f x x 2寫 f x x.2 其 x x.2 匿名函式第括號面自變數第二括號面表示式 函式指標 f x x.2 表示匿名函式 x x.2 賦值給f於f表示該函式 於f 2 2.2 4 f 1 3 1 3 2 1 4 9 等等 定義匿名函式呼叫別匿名函式比 f1 x,y x.2 y.2 定義...
MATLAB函式控制代碼 單元陣列和結構
函式控制代碼 單元陣列和結構 函式控制代碼 包含有引用函式時所有的資訊,優點 將函式控制代碼作為呼叫中的參量傳遞到另乙個函式 可以儲存到資料結構或檔案中 函式控制代碼運算子 有兩種函式控制代碼 1 命名函式控制代碼 建立例如 f sin 呼叫例如 f pi 4 或者 sin pi 4 2 匿名函式控...