参考文献
https://ww2.mathworks.cn/help/matlab/matlab_prog/creating-a-function-handle.htmlhtml
函数句柄是一种存储指向函数的关联关系的 MATLAB® 数据类型。 间接调用函数使在调用该函数时无需考虑调用位置。 函数句柄的典型用法包括:git
将一个函数传递到另外一个函数(一般称为功能函数)。例如,将函数传递到 integral 和 fzero 等积分和优化函数。github
指定回调函数。例如,响应 UI 事件或与数据采集硬件交互的回调。数组
构造之内联方式定义而非存储在程序文件(匿名函数)中的函数的句柄。函数
从主函数外调用局部函数。学习
f = @myfunction;
.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
q = integral(f,0,1);
函数句柄会存储其绝对路径,所以有效句柄能够从任意位置调用该函数。没必要在建立句柄时指定函数路径,只需指定函数名。优化
名称长度 - 函数名称(包括包名称和类名称)的每一个部分都必须小于 namelengthmax 指定的数值。不然 MATLAB 会截断该名称的后面一部分。code
范围 - 在您建立句柄时,该函数必须处于范围内。所以,该函数必须在 MATLAB 路径上或位于当前文件夹中。或者,对于局部或嵌套函数句柄,这些函数必须位于当前文件中。htm
优先级 - 当多个函数采用同一名称时,MATLAB 会使用与调用函数相同的优先级规则来定义函数句柄。事件
重载 - 若是指定的函数在非基础 MATLAB 类的类中重载函数,那么在构造该函数的句柄时,函数不会与该函数句柄关联。相反,MATLAB 会考虑输入参数并在计算时肯定要调用的实现。
sqr = @(n) n.^2; x = sqr(3) x = 9
C = {@sin, @cos, @tan}; C{2}(pi) ans = -1 或使用结构体数组: S.a = @sin; S.b = @cos; S.c = @tan; S.a(pi/2) ans = 1