赞
踩
数值运算是MATLAB的核心功能。但广大科研人员对符号运算的需求催生MATLAB产生了一个新的工具箱:Symbolic
Math Toolbox。
先来看一个简单的例子:
syms a b c x
f = a*x^2 + b*x + c;
便定义了一个符号函数f
如果要将f中的某些参数替换为数值,用subs函数
g = subs(f, {a, b, c}, {1, 4,
1});
表示将a替换为1,b替换为4,c替换为1。
除了syms类型,inline和匿名函数也是该Symbolic Math Toolbox的常客。
1 inline与匿名函数(Anonymous
Functions)
利用inline函数生成inline object的简单例子如下:
f = inline('a*x^2 + b*x + c', 'a',
'b', 'c', 'x')
f(1, 2, 3, 1)
结果为:
f =
Inline function:
f(a,b,c,x) = a * x^2 + b * x + c
ans =
6
但MATLAB官方已经申明在后续的版本中inline会被移除,取而代之的是匿名函数(Anonymous
Functions)。之所以有必要搞清楚这个新东西,是因为MATLAB提供的很多其它函数的argin只能为function
handle,比如integral, fzero, and fminbnd函数。
将上述代码改为匿名函数的代码如下,而匿名函数的调用同普通子函数function一样,括号里面为输入参数
f = @(a, b, c, x) a*x^2 + b*x +
c
f(1, 2, 3, 1)
结果为:
f =
@(a,b,c,x)a*x^2+b*x+c
ans =
6
但是,如果argin中只要有一个不是数值,而是参数,要么在调用前用syms定义此参数,要么在调用的时候再以@开头,声明为匿名函数
f = @(a, b, c, x) a*x^2 + b*x +
c
y1 = @(x) f(1, 2, 3, x)
syms x
y2 = f(1, 2, 3, x)
结果为:
y1 =
@(x
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。