在 MATLAB 中,符号 @
被用于创建函数句柄(function handle),这是 MATLAB 中一种非常灵活的语法,允许将函数作为变量来传递、调用或在其他函数中使用。
1. 创建匿名函数
匿名函数是一种简短的、只用一次的函数,它们可以通过 @
符号创建。例如:
f = @(x) x^2 + 2*x + 1;
这个表达式创建了一个关于变量 x
的匿名函数 f
,并将其保存为一个函数句柄。你可以使用 f
来计算某个输入的值:
result = f(3); % 计算 f(3),返回结果为 16
常见用法:
- 创建简单的数学表达式函数。
- 方便地将函数传递给其他函数(如数值求解器)。
2. 传递函数句柄
@
符号也可以用于将现有函数传递给其他函数。比如,MATLAB 中许多内置函数(如求解器、优化器)都接受函数句柄作为参数:
示例 1: 传递内置函数
result = fminbnd(@sin, 0, pi); % 在区间 [0, pi] 上最小化 sin 函数
@sin
代表 MATLAB 内置的 sin
函数。
示例 2: 自定义函数句柄
假设我们定义了一个函数 myFunc
function y = myFunc(x)
y = x^2 + 3*x - 5;
end
我们可以将 @myFunc
作为参数传递给其他函数
result = fzero(@myFunc, 2); % 在初值 2 附近找到 myFunc 的根
3. 数组操作中的函数句柄
使用函数句柄,MATLAB 可以灵活地对数组执行操作。例如,你可以使用 arrayfun
来将函数应用到数组的每个元素上。
arr = [1, 2, 3, 4];
result = arrayfun(@(x) x^2, arr); % 对数组 arr 的每个元素求平方
此时,@(x) x^2
是一个匿名函数,它对数组 arr
的每个元素应用,并返回新的数组 result
。