Function Handle
函数句柄 function handle 是用来表示 Matlab Function 的一种数据类型. 它的作用就是将函数赋值给变量, 更灵活的应用各种函数. 作为函数时函数句柄与一般函数的用法一致.
但是注意, 函数句柄只是原函数的一种表示, 本身并不储存原函数信息. 所以若原函数代码被删除后, 指向这个函数的所有函数句柄也就失效了.
属性
- 函数 functions 返回函数句柄表示的函数的详细信息
- 函数 isequal 可以比较两个函数句柄
- 注意
==等操作不支持函数句柄作为运算对象
- 注意
创建语法
fhandle = @funName以上操作符 @ 将函数 funName 变成 function handle 类赋值给了变量 %fhandle%
!! @ 后可有空格
匿名函数
函数句柄一个重要应用就是创建单行的匿名函数, 见 Matlab Anonymous Function.
作为数据类型
要形成 “函数数组”, “函数结构体”, 就需要用到函数句柄是一种数据类的特定. 如下例
disp('sin',pi/2) % 显示 1
function y = fun(which_fun,x)
s.sin = @sin; % 将函数作为函数句柄保存在结构体中
s.cos = @cos;
y = s.(which_fun)(x);
end又比如一些函数接收函数作为参数 (function functions), 则需要先将被作用函数转换为函数句柄, 在传递给作用于它的函数. 如下例
Sin = @sin
disp(integral(Sin,0,pi)) % 显示 2.0000注意以上性质是数据类型的特点, 所以不一定需要将 function handle赋值给变量, 也可以直接作为 function handle 类使用. 如下例
disp(integral(@sin,0,pi)) % 显示 2.0000
disp(integral(@(x) x.^2,0,1)) % 显示 0.3333对于无输入参数匿名函数, 不能像一般函数那样省略圆括号 (), 否则返回的是其作为变量的信息. 如下例
>> f = @() disp('hello');
>> f()
hello
>> f
function_handle with value:
@()disp('hello')