内联函数
>> f = inline('x^2 + y^3')
f =
内联函数:
f(x,y) = x^2+y^3
>> f(2, 3)
31
其实
inline('x^2+y^3')
等价于
inline('x^2+y^3', 'x', 'y')
% 后续可变参数标识参数列表
匿名函数
语法结构为:
fhandle=@(arglist) expression
>> f = @(x, y) x^2 + y^3
f =
@(x,y)x^2+y^3
>> f(2, 3)
31
匿名函数甚至支持多个输出:
>> f = @(x) [(x-1)^2 2*(x-1)]
>> f(0)
ans =
1 2
函数函数
函数函数(function function)是对传入的其他函数进行操作的函数,传入的函数作为函数函数的输入参数。传入到函数函数中的函数称为传递函数(Passed function),事实上MATLAB中就有许多这样的函数,例如求解常微分方程的函数ode23、ode45、ode113等都是函数函数,他们的第一个参数都是传递函数。
绘制 [−π,π] 上正弦图形:
>> fplot(@(x) sin(x), [-pi, pi])
或者简化为:
>> fplot(@sin, [-pi, pi])
关于fplot
一种稍微复杂点的用法为:
>> fplot(@sin, [-pi, pi, -.5, .5], 2e-2, 10, '-.o')
- [-pi, pi, -.5, .5]:分别表示 xmin, xmax, ymin, ymax
- 2e-2(<1):表示 tol,容许的误差,意味着步长。越小,则区间需切分得越细,精度要求得越高
- 10(>= 1):表示最小点数
>> fplot(@sin, [-pi, pi], -.5, 10, '-.or')
>> fplot(@sin, [-pi, pi], -.5, '-.or')
函数式编程的典范应当是:feval,
>> feval(@(x, y) sin(x)+cos(y), -5:.01:5, -5:.01:5)