http://wenku.baidu.com/view/cc9b4308bb68a98271fefa6f.html (Matlab北航教程)
CH 7.6 函数句柄
函数句柄是matlab的一个数据类型,保存函数的路径、视野、函数名及重载方式等。
使用函数句柄的优点
1.使一些泛函指令工作更可靠
2.使函数调用象变量引用一样方便
3.可获得同名重载函数的信息
4.可在更大范围内调用各种函数,提高软件的重用性
5.提高函数调用速度。
一、函数句柄的创建与观察
1.创建
handlef=@fname;
handlef=str2func(‘fname’)
例如:fhandle = @sin;
sin是matlab中自带的正弦函数,得到的输出变量fhandle为sin函数的句柄。可以利用fhandle来调用sin函数,例如下面的代码:
fhandle(0)
上面语句得到的输出代码如下:
ans = 0
实际上,该程序中的语句fhandle(0)相当于语句sin(0)。
二、函数句柄的应用
[out1,ou2,…]=fname(in1,in2,…)
也可通过函数句柄来完成函数运算:
[out1,ou2,…]= handlef(in1,in2,…)
[out1,ou2,…]=feval(handlef,in1,in2,…)
http://www.ilovematlab.cn/thread-23048-1-1.html matlab 函数句柄@的介绍_什么是函数句柄
觉得自己很少用函数句柄,但是经常遇到,所以在这里总结一下。
函数句柄:是包含了函数的路径、函数名、类型以及可能存在的重载方法。
函数句柄必须通过专门的定义创建的,而一般的图像的句柄是自动建立的。
创建函数句柄使用@或者str2func命令创建
执行sin函数 feval
feval('sin',pi/2) %查matlab帮助 feval 既可以,可以不必关心这个函数的使用
ans =
1
那么使用函数句柄有什么好处呢?
1、提高运行速度。因为matlab对函数的调用每次都是要搜索所有的路径,从set path中我们可以看到,路径是非常的多的,所以如果一个函数在你的程序中需要经常用到的话,使用函数句柄,对你的速度会有提高的。
2、使用可以与变量一样方便。比如说,我再这个目录运行后,创建了本目录的一个函数句柄,当我转到其他的目录下的时候,创建的函数句柄还是可以直接调用的,而不需要把那个函数文件拷贝过来。因为你创建的function handles中,已经包含了路径,比如说我创建了一个fun
h_fun=str2func('rei');
可以用functions来查看这个function,结果果然已经包括了路径。
functions(h_fun)
ans =
function: 'rei'
type: 'simple'
file: 'G:\program\serial232\rei.m'