[email protected](x)acos(x)这是什么意思?其中@代表什么?
表示 f 为函数句柄(匿名函数),@是定义句柄的运算符。在Matlab中句柄可以理解为指针。
函数句柄(Function handle)是Matlab的一种数据类型,它包含了函数的路径、函数名、类型以及可能存在的重载方法;
引入函数句柄是为了使feval及借助于它的泛函指令工作更可靠;使“函数调用”像“变量调用”一样方便灵活;提高函数调用速度,特别在反复调用情况下更显效率;提高软件重用性,扩大子函数和私用函数的可调用范围;迅速获得同名重载函数的位置、类型信息。
①提高运行速度(理解为指针就很好懂了)。因为matlab对函数的调用每次都是要搜索所有的路径,从set path中我们可以看到,路径是非常的多的,所以如果一个函数在你的程序中需要经常用到的话,使用函数句柄,对你的速度会有提高的。
②使用可以与变量一样方便。比如说,我再这个目录运行后,创建了本目录的一个函数句柄,当我转到其他的目录下的时候,创建的函数句柄还是可以直接调用的,而不需要把那个函数文件拷贝过来。因为你创建的function handles中,已经包含了路径。
如定义 [email protected](x)acos(x) 相当于建立了一个函数文件:
% f.mfunction
y=f(x)
y=acos(x);
所以,如果你定义了f= @(x)acos(x),则可以在命令窗口中输入如f(2)来得到函数值,更一般的调用是使用feval函数来得到函数值,如
rusult = feval(f,2)
详细可以参见:http://blog.csdn.net/kevinhg/article/details/8861774
http://www.cnblogs.com/begtostudy/archive/2012/06/27/2565920.html