matlab匿名函数求导,Matlab中的匿名函数的使用
轉(zhuǎn)載自:http://blog.sina.com.cn/s/blog_71fb42f70100uyfx.html#commonComment
1.匿名函數(shù)的基本用法。
handle = @(arglist)anonymous_function
其中handle為調(diào)用匿名函數(shù)時(shí)使用的名字。arglist為匿名函數(shù)的輸入?yún)?shù),可以是一個(gè),也可以是多個(gè),用逗號(hào)分隔。anonymous_function為匿名函數(shù)的表達(dá)式。舉個(gè)例子如下:
>> f=@(x,y)x^2+y^2;
>> f(1,2)
ans = ?5
當(dāng)然輸入的是數(shù)組也是可以的:
>> f=@(x,y)x.^2+y.^2;
%注意需要點(diǎn)(.)運(yùn)算
>> a=1:1:10;
>> b=10:-1:1;
>> f(a,b)
ans = ? ?101 ? ?85 ? ?73 ? ?65 ? ?61 ? ?61 ? ?65 ? ?73 ? ?85 ? 101
匿名函數(shù)的表達(dá)式中也可以有參數(shù)的傳遞,比如:
>> 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.1000 ? 20.2000 ? 18.3000 ? 20.4000 ? 26.5000
c作為表達(dá)式中的參數(shù),進(jìn)行了數(shù)據(jù)傳遞。上面都是單重匿名函數(shù),也可以構(gòu)造多重匿名函數(shù),如:
>> f=@(x,y)@(a) x^2+y^+a;
>> f1=f(2,3)
f1 = @(a)x^2+y^+a
>> f2=f1(4)
f2 = ? 85
每個(gè)@后的參數(shù)從它后面開始起作用,一直到表達(dá)式的最后。
2.使用匿名函數(shù)實(shí)現(xiàn)符號(hào)函數(shù)的賦值運(yùn)算 在老版本的Matlab中,這個(gè)功能是由inline函數(shù)完成的,現(xiàn)在用匿名函數(shù)完成此功能。比如:知道z=2x^3+4x+5,求z在x=3處的2階導(dǎo)數(shù)值。可以先用符號(hào)函數(shù)算出z的2階導(dǎo)數(shù)的表達(dá)式,然后通過匿名函數(shù),把x賦予3的值,得到最后結(jié)果: >> syms x; %定義符號(hào)變量? >> z=2*x^3+4*x+5; %定義表達(dá)式? >> z1=diff(z,2) %求z的2階導(dǎo)數(shù)的表達(dá)式 ?z1 = 12*x? >> z2=eval(['@(x)' vectorize(z1)]); %vectorize函數(shù)的功能是使內(nèi)聯(lián)函數(shù)適合數(shù)組運(yùn)算的法則? >> z2(3)? ans = 36
總結(jié)
以上是生活随笔為你收集整理的matlab匿名函数求导,Matlab中的匿名函数的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: thinkphp3.1迁移php7,Th
- 下一篇: matlab绘图z=sin(x,用mat