函数句柄
可用于间接调用函数的变量
函数句柄是一种表示函数的 MATLAB® 数据类型。函数句柄的典型用法是将函数传递给另一个函数。例如,您可以将函数句柄用作基于某个值范围计算数学表达式的函数的输入参数。
函数句柄可以表示命名函数或匿名函数。要创建函数句柄,使用 @ 运算符。例如,创建用于计算表达式 x2 – y2 的匿名函数的句柄:
f = @(x,y) (x.^2 - y.^2);
您可以为已命名函数和匿名函数创建函数句柄。您可以将多个函数句柄存储在数组中,保存并加载它们,方法与对任何其他变量一样。
什么是函数句柄?
函数句柄是一种存储指向函数的关联关系的 MATLAB® 数据类型。间接调用函数使您在调用该函数时无需考虑调用位置。函数句柄的典型用法包括:
- 将一个函数传递到另一个函数(通常称为复合函数)。例如,将函数传递到 integral 和 fzero 等积分和优化函数。
- 指定回调函数(例如,响应 UI 事件或与数据采集硬件交互的回调)。
- 构造以内联方式定义而非存储在程序文件(匿名函数)中的函数的句柄。
- 从主函数外调用局部函数。
查看变量 h 是否为函数句柄
以使用 isa(h,‘function_handle’) 来查看变量 h 是否为函数句柄。
创建函数句柄
通过在函数名称前添加一个 @ 符号来为函数创建句柄。例如,如果您有一个名为 myfunction 的函数,请按如下所示创建一个名为 f 的句柄:
f = @myfunction;
使用句柄调用函数的方式与直接调用函数一样。例如,假设您有一个名为 computeSquare 的函数,该函数定义为:
function y = computeSquare(x)
y = x.^2;
end
创建句柄并调用该函数以计算 4 的平方。
f = @computeSquare;
a = 4;
b = f(a)
b =
16
如果该函数不需要任何输入,则您可以使用空括号调用该函数,例如
h = @ones;
a = h()
a =
1
如果不使用括号,则该赋值会创建另一个函数句柄。
a = h
a =
@ones