匿名函數

匿名函數

匿名函數它是matlab中定義的一種函數形式,出現在matlab中,匿名函數不以文件形式駐留在文件夾上;他的生成方式最簡捷,可在指令窗或任何函數體內通過指令直接生成。

匿名函數的作用主要是實現自己定義matlab中的函數,從而擴大函數的使用功能。

基本概況


壽命
和內聯函數(inline)相比,匿名函數的優越性在於可以直接使用workspace中的變數,不必申明,非常適合嵌入到M文件中。
%例10-25匿名函數舉例。
%本例列舉3個匿名函數的例子,分別有0個、1個和兩個輸入參數。
%首先介紹沒有輸入參數的匿名函數,只需用空格代替arglist即可。例如,編寫求解當前時間的匿名函數如下所示。
>>t=@()datestr(now);
t()%函數的調用
ans=
14-Sep-2004 20:22:50
%值得注意的是,調用該函數時,括弧不能省略,否則, MATLAB 7.1將對程序不予計算,如下所示。
>>t
t=
@()datestr(now)
>>
%再介紹有一個輸入參數的匿名函數,該函數用於求所輸入參數的平方,編製並運行程序如下所示。
>>sqr=@(x)x.^2
sqr=
@(x)x.^2
>>sqr(12)
ans=
144
>>
%最後介紹有兩個輸入參數的匿名函數,用戶可以由此推導有多個參數的匿名函數,編製並運行程序如下所示。
>>sumAxBy=@(x, y)(14*x + 41*y)
sumAxBy=
@(x, y)(14*x+41*y)
>>sumAxBy(3,7)
ans=
329
>>
注意這些定義過程,其中@這個標誌符是很重要的。
匿名函數的表達式中也可以有參數的傳遞,比如:
>>a=1:5;b=5:-1:1; c=0.1:0.1:0.5;
>>f=@(x,y)x.^2+y.^2+c;
>>f(a,b)
ans=26.100020.200018.300020.400026.5000
c作為表達式中的參數,進行了數據傳遞。
上面都是單重匿名函數,也可以構造多重匿名函數,如:
>>f=@(x,y)@(a) x^2+y^+a;
>>f1=f(2,3)
f1=@(a)x^2+y^+a%注意這裡f1是關於a的函數了,與f不同。
>>f2=f1(4)
f2=85
每個@后的參數從它後面開始起作用,一直到表達式的最後。