matlab 中的内联函数、匿名函数和函数函数

内联函数

>> 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)

你可能感兴趣的:(matlab 中的内联函数、匿名函数和函数函数)