函数句柄是从MATLAB6.0开始具有的一种语言结构,用以在使用函数过程中保存函数的相关信息,尤其是关于函数执行的信息。
1.函数句柄的创建与显示
函数句柄的创建可以通过特殊符号@引导函数名来实现:在@后添加相应函数的函数名。函数句柄实际上就是一个结构数组。
例:创建一个函数文件,实现差的计算功能
函数句柄的内容可以通过函数functions来显示,将会返回函数句柄所对应的函数名、类型、文件类型以及加载方式。函数类型如下:
函数类型 说明
simple 未加载的MATLAB内部函数、M文件,或只在执行过程中才能用type函数显示内容的函数
subfunction MATLAB子函数
private MATLAB局部函数
constructor MATLAB类的创建函数
overloaded 加载的MATLAB内部函数或M文件
函数的文件类型是指该函数句柄的对应函数是否为MATLAB的内部函数。
函数的加载方式只有函数类型为overloaded时才存在 。
>> functions(fhandle)
ans =
function: 'sub_ab'
type: 'simple'
file: ''
>>
2.函数句柄的调用与操作
函数句柄的操作可以通过feval进行,格式如下:
[y1,y2,...] = feval(fhandle, x1, ... , xn)
其中,fhandle为函数句柄的名称,“x1, ..., xn"为参数列表。
这种调用相当于以函数名作为输入变量的feval操作,也相当于执行以参数列表为输入变量的函数句柄所对应的函数
>> feval(fhandle,4,3)
ans =
1
>> feval('sub_ab',4,3)
ans =
1
>> sub_ab(4,3)
ans =
1