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 等 | 匿名函数更省事 |