feval函數的作用就是求函數值,
基本格式為:
[y1,..,yn] = feval(F,x1,...,xn) :F是需要使用函數的函數名,或者句柄;xi是函數的參數,yi是函數的返回值。
舉例:
假設需要調用的函數foo定義如下:
1 function x=foo(a,b) 2 x=a*b;
若在main函數中用feval調用foo,可以有以下幾種方式
- result=feval('foo',3,15);
- result=feval(@foo,3,16); %這里@foo即句柄
- 若調用的函數要作為main的參數,則
1 function result=main(f) 2 result=feval(f,3,10);
然后調用main時將'foo'傳入即可 。
提示:
-
如果您有函數句柄,不需要使用 feval ,因為您可以直接調用函數句柄。以下語句的結果是相等的。
fh = @eig; [V,D] = fh(A) [V,D] = feval(@eig,A)
-
要使用 feval 計算嵌套或局部函數,請使用函數句柄而不是函數名稱。
Feval函數的優點在於:
便於將同一類函數功能統一,當函數作為參數傳入主函數中時,使用feval函數可以較好的調用函數參數。如:
主體函數: function [p0,err,k,y]=Newton_Raphson(f,df,p0,delta,epsilon,max1) feval(f,p0) feval(df,p0) 函數調用: g=@(t,x)1/(1+x^2); [p0,err,k,y]=newton('atan',g,pi,0.00001,0.00001,10000)
這里的f,df代表的都是一個函數的形參。該函數是用牛頓-拉夫森方法計算函數的近似值,故可以將任意函數作為形參傳入該函數中。
在這里,使用feval函數調用,比直接調用函數更好。