包含了函数的路径、函数名、类型以及可能存在的重载方法;
引入函数句柄是为了使feval及借助于它的泛函指令工作更可靠;使“函数调用”像“变量调用”一样方便灵活;提高函数调用速度特别在反复调用情况下更显效率;提高软件重用性,扩大子函数和私用函数的可调用范围;迅速获得同名重载函数的位置、类型信息
MATLAB中函数句柄的使用使得函数也可以成为输入变量,并且能很方便的调用提高函数的可用性和独立性。
函数句柄实际上提供了一种间接调用函数的方法
创建函数句柄需要用到操作符@
调用函数时就可以调用该句柄,可以实现同样的功能
此处@f1即为函数f1的句柄,可以用class(@f1)判断变量的类型得到ans = function_handle即函数句柄。函数ftest是求一个二维函数在指定点的梯度值我们可以替换目标函数为f2或其他函数同样可以求得梯度。这样函数ftest就可以适用于任何二维函数而不必做改动了
①提高运行速度。因为matlab对函数的调用每次都是要搜索所有的路径从set path中峩们可以看到,路径是非常的多的所以如果一个函数在你的程序中需要经常用到的话,使用函数句柄对你的速度会有提高的。
②使用鈳以与变量一样方便比如说,我再这个目录运行后创建了本目录的一个函数句柄,当我转到其他的目录下的时候创建的函数句柄还昰可以直接调用的,而不需要把那个函数文件拷贝过来因为你创建的function handles中,已经包含了路径