MATLAB匿名函数用一行表达式定义函数,不必单独建 .m 文件。语法以 @ 开头:

f = @(x) x.^2;

@ 表示函数句柄,(x) 是参数列表,后面是表达式。调用方式和普通函数一样:

f(3)        % 9
f([1 2 3])  % 1 4 9(点乘方,可处理数组)

多参数

power = @(x, n) x.^n;
power(7, 3)      % 343
power(49, 0.5)   % 7
power(10, -10)   % 1e-10

传给其他函数

匿名函数常被当作参数,交给内置求解器。例如用 fzero 求根,用 integral 做数值积分:

% 求 sin(x) - x/2 = 0 在 x=1 附近的根
root = fzero(@(x) sin(x) - x/2, 1)

% 求 x^2 在 0 到 1 上的积分
area = integral(@(x) x.^2, 0, 1)
root = 1.8955
area = 0.3333

这里传入的是函数本身,不是某一次算出来的数值,这是函数句柄的核心用法。

捕获外部变量

匿名函数可以记住定义时工作区里的变量:

a = 2;
g = @(x) a * x;   % 记住 a = 2
g(10)             % 20

怎么选

场景建议
一行表达式、临时使用匿名函数
逻辑复杂、多行、要长期复用.m 文件写正式函数
作为参数传给 fzero / integral / fminbnd 等匿名函数更省事