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函数调用,比直接调用函数更好。