1、第4章 MATLAB符号计算 1.符号计算基础 2.符号微积分 3. 级 数 4.符号方程求解 5.积分变换,4.1符号计算基础 4.1.1符号对象的建立 1.创建符号变量 MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。 (1) sym函数 sym函数用来建立单个符号量,一般调用格式为: 符号量名=sym(符号字符串) 该函数可以建立一个符号量,符号字符串可以是常量、变量、 函数或表达式。, a=sym(a) a = a,注意:符号变量a和非符号变量a是不同的。非符号变量在参与运算之前必须赋值,变量的运算实际上是该变量对应的值进行运算,其结果是一个和变量类型对
2、应的值;而符号变量参与运算之前无须赋值,其结果是一个由参与运算的变量名组成的表达式。,a=sym(a);b=sym(b);c=sym(c);d=sym(d); A=a,b;c,d A = a, b c, d w=1;x=2;y=3;z=4; B=w,x;y,z B =1 23 4, det(A) ans = a*d-b*c (A=sym(a,b;c,d) det(B) ans =-2,应用sym函数还可以定义符号常数,使用符号常数进行代数运算时和数值常量进行的运算不同。下面的命令用于比较符号常量与数值常量在代数运算时的差别。, a=sym(8); b=8; sqrt(a) %结果为符号常量 a
3、ns = 2*2(1/2) sqrt(b) %结果为数值常量 ans =2.8284,eval(a)%计算符号表达式的值 ans =8,(2) syms函数 MATLAB提供了另一个函数syms,一次可以定义多个符号 变量。syms函数的一般调用格式为: syms 符号变量名1 符号变量名2 符号变量名n 用这种格式定义符号变量时不要在变量名上加字符串 分界符(),变量间用空格而不要用逗号分隔。,例如用syms定义a、b、c三个符号变量: syms a b c,2建立符号表达式和符号矩阵建立符号表达式有以下2种方法: (1)用sym函数建立符号表达式。 (2) 使用已经定义的符号变量组成符号表
4、达式。, f=sym(a*x2+b*x+c) f = a*x2+b*x+c syms x a b c f=a*x2+b*x+c f = a*x2+b*x+c,创建符号矩阵的方法同创建符号表达式如: syms a11 a12 a21 a22 A=a11 a12;a21 a22 A = a11, a12 a21, a22 sym(a11 a12;a21 a22),法一,法二,符号表达式的因式分解与展开 MATLAB提供了符号表达式的因式分解与展开的函 数,函数的调用格式为: factor(f):对符号表达式f分解因式。 expand(f):对符号表达式f进行展开。 collect(f):对符号表达
5、式f合并同类项。 collect(f,v):对符号表达式f按变量v合并同类项。,4.1.2 基本的符号运算, syms x y f=(2*x+3*y)*(x+1) f = (2*x+3*y)*(x+1) a=expand(f) a = 2*x2+2*x+3*y*x+3*y a=collect(a,x) a = 2*x2+(2+3*y)*x+3*y factor(a) ans = (2*x+3*y)*(x+1),符号矩阵也是一种符号表达式,所以前面介绍的 符号表达式运算都可以在矩阵意义下进行。但应注意 这些函数作用于符号矩阵时,是分别作用于矩阵的每 一个元素。由于符号矩阵是一个矩阵,所以符号矩阵
6、还能进 行有关矩阵的运算。MATLAB还有一些专用于符号 矩阵的函数,这些函数作用于单个的数据无意义。 例如 transpose(s):返回符号矩阵s的转置矩阵。 s:返回符号矩阵s的共轭转置矩阵。 det(s):返回s矩阵的行列式值。 其实,曾介绍过的许多应用于数值矩阵的函数,如 diag、triu、tril、inv、det、rank、eig等,也可直接 应用于符号矩阵。,符号表达式与数值表达式之间的转换 利用函数sym可以将数值表达式变换成它的符号表达式。 函数numeric或eval可以将符号表达式变换成数值表达式。 符号表达式中变量的确定 MATLAB中的符号可以表示符号变量和符号常量
7、。 findsym可以帮助用户查找一个符号表达式中的的 符号变量。该函数的调用格式为:findsym(s,n) 函数返回符号表达式s中的n个符号变量,若没有指定n, 则返回s中的全部符号变量。 仅作了解。,4.2.1符号函数的极限 limit函数的调用格式为: limit(f,x,a):求符号函数f(x)的极限值。即计算当变量x趋近于常数a时,f(x)函数的极限值。 注:其中a可以为一个确定的数,也可以为无穷大。在应用 时,先用syms命令把x声明为符号变量 (2) limit(f,a):求符号函数f(x)的极限值。由于没有指定 符号函数f(x)的自变量,则使用该格式时,符号函数f(x) 的变
8、量为函数findsym(f)确定的默认自变量,即变量x趋 近于a。,4.2 微分运算,(3) limit(f):求符号函数f(x)的极限值。符号函数f(x)的变量为函数findsym(f)确定的默认变量;没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况。 (4) limit(f,x,a,right):求符号函数f的极限值。right表示变量x从右边趋近于a。 (5) limit(f,x,a,left):求符号函数f的极限值。left表示变量x从左边趋近于a。,例如:求极限, syms x limit(sin(x)/x,x,0) ans = 1 limit(sin(x)/x) ans
9、 = 1, limit(1/x,x,0) ans = NaN limit(1/x,x,0,left) ans = -inf limit(1/x,x,0,right) ans = inf,例 求下列极限。 极限1: syms a m x; f=(x*(exp(sin(x)+1)-2*(exp(tan(x)-1)/(x+a); limit(f,x,a) ans = (1/2*a*exp(sin(a)+1/2*a-exp(tan(a)+1)/a 极限2: syms x t; limit(1+2*t/x)(3*x),x,inf) ans = exp(6*t),极限3: syms x; f=x*(sqr
10、t(x2+1)-x); limit(f,x,inf,left) ans = 1/2 极限4: syms x; f=(sqrt(x)-sqrt(2)-sqrt(x-2)/sqrt(x*x-4); limit(f,x,2,right) ans = -1/2,4.2.2 符号函数的微分 diff函数用于对符号表达式求微分(导数)。该函数 的一般调用格式为: diff(f):没有指定变量和导数阶数,则系统按findsym 函数指示的默认变量对符号表达式f求一阶导数。 diff(f, x):以x为自变量,对符号表达式f求一阶导数。 diff(f,n):按findsym函数指示的默认变量对符号表达式 f求
11、n阶导数,n为正整数。 diff(f, x,n):以x为自变量,对符号表达式f求n阶导数。, syms x diff(x*cos(x),x) ans = cos(x)-x*sin(x) diff(x*cos(x),x,2) ans = -2*sin(x)-x*cos(x) diff(x*cos(x),x,3) ans = -3*cos(x)+x*sin(x),4.3积分运算 符号积分由函数int来实现。该函数的一般调用格式为: int(f):没有指定积分变量和积分阶数时,系统按findsym函数指 示的默认变量对被积函数或符号表达式f求不定积分。 int(f,x):以v为自变量,对被积函数或符
12、号表达式s求不定积分。 int(f,x,a,b):求定积分运算。a,b分别表示定积分的下限和上限。 该函数求被积函数在区间a,b上的定积分。a和b可以是两个具体 的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数f关 于变量x在闭区间a,b上可积时,函数返回一个定积分结果。当 a,b中有一个是inf时,函数返回一个广义积分。当a,b中有一个符 号表达式时,函数返回一个符号函数。, syms x int(1/(x2+1) ans = atan(x), syms x t; f1=x2/(x+1); a1=int(f1,1,2) a1 = log(3)+1/2-log(2) double(
13、a1) ans =0.9055, f2=1/(x2+1) ; a2=int(f2,-inf,inf) a2 = pi, f3=2*t*x; a3=int(f3,x,1,sin(t) a3 = t*(sin(t)2-1),4.4 级 数 1.级数符号求和求无穷级数的和需要符号表达式求和函数symsum,其 调用格式为:symsum(s,v,n,m)其中s表示一个级数的通项,是一个符号表达式。v是求和变量,v省略时使用系统的默认变量。n和m是求和的开始项和末项。,例:分别求级数的和。和syms k symsum(1/k,k,1,inf) ans = inf symsum(1/(k*(k+1),k,
14、1,inf) ans = 1,2. 函数的泰勒级数 MATLAB提供了taylor函数将函数展开为幂级数, 其调用格式为:taylor(f,x,n,a) 该函数将函数f按变量x展开为泰勒级数,展开到第n项 (即变量x的n-1次幂)为止,n的缺省值为6。x的缺省值与 diff函数相同。参数a指定将函数f在自变量x=a处展开, a的缺省值是0。, f=(1+2*x+3*x2)/(1-2*x-3*x2); taylor(f,x,5) ans = 1+4*x+14*x2+40*x3+122*x4,4.5.1 代数方程 在MATLAB中,求解用符号表达式表示的代数方程 可由函数solve实现,其调用格式
15、为: solve(f):求解符号表达式f的代数方程,求解变量为默 认变量。 solve(f,x):求解符号表达式f的代数方程,求解变量为x。 solve(f1,f2,fn,x1,x2,xn):求解符号表达式f1,f2,fn 组成的代数方程组,求解变量分别x1,x2,xn。,4.5 求解方程,例如求解一元二次方程的解, syms x a b c y=a*x2+b*x+c y = a*x2+b*x+c solve(y) ans = 1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2), solve(y,a) %求解未知变量a ans = -(b*x
16、+c)/x2,在求解后,有时解的表示是有理分式形式,可以用double函数将结果化为小数,但会使结果不够精确。, y=x2+3*x+4; solve(y) ans = -3/2+1/2*i*7(1/2) -3/2-1/2*i*7(1/2) double(ans) ans =-1.5000 + 1.3229i-1.5000 - 1.3229i,若要求解的是 形式的方程,可给出整个方程,并用单引号引起来,或将方程改为 ,并将 赋给另一个变量,然后再使用函数。,求解方程组:,x,y=solve(x*y=2,x2+y2=4) x = 2(1/2) -2(1/2) y = 2(1/2) -2(1/2),
17、4.5.3 符号常微分方程求解 在MATLAB中,用大写字母D表示导数。例如,Dy表示y,D2y表示y,Dy(0)=5表示y (0)=5。 D3y+D2y+Dy-x+5=0表示微分方程y (3) +y +y -x+5=0。 符号常微分方程求解可以通过函数dsolve来实现, 其调用格式为:dsolve(e,c,v) 该函数求解常微分方程e在初值条件c下的特解。参数v描 述方程中的自变量,省略时按缺省原则处理,若没有给出 初值条件c,则求方程的通解。 dsolve在求常微分方程组时的调用格式为: dsolve(e1,e2,en,c1,cn,v1,vn) 该函数求解常微分方程组e1,en在初值条件
18、c1,cn下的 特解,若不给出初值条件,则求方程组的通解,v1,vn 给出求解变量。,dsolve(Dy=1+y2)%求一阶微分方程的通解 ans = tan(t+C1) dsolve(Dy=1+y2,y(0)=1)%给定初始条件,求特解 ans = tan(t+1/4*pi) dsolve(Dy=1+y2,y(0)=1,x)%改变自变量为x ans = tan(x+1/4*pi),dsolve(D2y=cos(t)-y,Dy(0)=0,y(0)=1) ans =cos(t)+1/2*sin(t)*t,x,y=dsolve(Dx=3*x+4*y,Dy=-4*x+3*y,x(0)=0,y(0)=
19、1) x = exp(3*t)*sin(4*t) y = exp(3*t)*cos(4*t),求解二阶微分方程,求解一阶微分方程组,4.6 积分变换 常见的积分变换有傅立叶变换、拉普拉斯变换和Z变换。 1傅立叶(Fourier)变换 在MATLAB中,进行傅立叶变换的函数是: F=fourier(f):计算函数f对默认变量x的fourier变换, 返回关于w的函数。 F= fourier(f,v):对默认变量x进行fourier变换, 返回关于v的函数。 F= fourier(f,u,v):对关于u的函数f进行fourier变换, 返回关于v的函数F。,syms x f w f=exp(-x.
20、2); F=fourier(f); y=-3:0.05:3; fy=subs(f,x,y); subplot(2,1,1) plot(y,fy); t=-5:0.1:5; ft=subs(F,w,t); subplot(2,1,2); plot(t,ft);,subs(f, old, new)可以在符号表达式中进行变量替换,用new字符串代替各old个字符串,f=ifourier(F): F对默认变量w作ifourier逆变换,返回关于x的函数。 f=ifourier(F,u): 返回关于u的函数f。 f=ifourier(F,u,v): 对关于u的函数F作ifourier逆变换,返回关于v的
21、函数f。,Fourier逆变换使用函数ifourier,格式与fourier相同,2拉普拉斯(Laplace)变换 在MATLAB中,进行拉普拉斯变换的函数是:laplace, ilaplace laplace(f):求函数f对默认变量t的Laplace变换, ,默认 返回关于s的函数。 laplace(f,u):返回关于u的函数。 laplace(f,u,v):对关于u的函数f作Laplace变换,返回关于 v的函数。 ilaplace(F,u,v):求拉普拉斯像函数F(u)的原函数f(v)。,3Z变换和逆Z变换 当函数f(x)呈现为一个离散的数列f(n)时,对数列f(n) 进行z变换的MA
22、TLAB函数是: ztrans(f,n,z):求f(n)的Z变换像函数F(z)。 iztrans(F,z,n):求F的z变换原函数f(n)。,第五章MATLAB绘图,77页图形窗口工具栏专用按钮 5.1二维图形 5.1.1绘制二维图形的基本函数 表5-1 plot x轴和y轴均为线性坐标 semilogx x 轴为对数坐标,y轴为线性坐标 semilogy x 轴为线性坐标,y轴为对数坐标 polar 绘制极坐标曲线 grid 在图形窗口中添加网格(grid on)或去掉网格(grid off) zoom 允许(zoom on)或不允许(zoom off)对图形进行放大或缩小 ginput 用
23、鼠标获取图形中点的坐标patch, fill,一、plot函数绘制二维图形的最基本函数是plot,它是针对向 量或矩阵的列来绘制曲线的。也就是说,使用plot函 数之前,必须首先定义好曲线上每一点的x及y坐标, 常用格式有: plot(y) 只有一个参数时,以y参数的值为纵坐标,横坐标x从1开始,长度与参数y相同 2. plot(x,y) 以x元素为横坐标值,y元素为纵坐标值绘制曲线。 3. plot(x,y1,x,y2,) 以公共的x元素为横坐标值,以y1,y2等为纵坐标值,绘制多条曲线。,4. plot(x,y,选项) 选项包括线形、颜色、数据点标记符号等特性的设置。 80页表5-2。,y
24、=0 1 2 3 2 1 0 ; plot(y,*-);plot(y) 只有一个 参数时, 以y参数的 值为纵坐标, 横坐标x 从1开始, 长度与 参数y相同,2.plot(x,y) 以x元素 为横坐标 值,y元素 为纵坐标 值绘制曲 线。,t=0:0.1:7; x=sin(t); plot(t,x,k); title(正弦曲线); xlabel(x轴); ylabel(y轴);,t=0:0.1:7; x=sin(t); plot(t,x,k);,t=0:0.1:7; y=0; x=sin(t); plot(t,x,r-*,t,y,-.b+) ; axis off %取消坐标轴, 默认为显示坐
25、标轴即axis on 3.plot(x,y1,x,y2,) 以公共的x元素 为横坐标值, 以y1,y2等 为纵坐标值, 绘制多条曲线。,例:画出一条正弦曲线 和一条余弦曲线。 x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2) text(1.5,0.2,y2=cosx) %在坐标(x,y)处标注说明文字 gtext(y1=sinx) %用鼠标在特定处标注说明文字,在0x2区间内,绘制曲线y=2e-0.5xcos(4x) x=0:pi/100:2*pi; y=2*exp(0.5*x).*cos(4*pi*x); plot(x,y) text
26、(3,0.5,y=2exp(-0.5x)cos(4pix) %输入特定的文字 需要用反斜杠()开头 pi alpha beta leftarrow rightarrow bullet .,例: 4.plot(x1,y1,x2,y2,xn,yn) x1=0:pi/10:2*pi; %x1=linspace(0,2*pi,100); x2=0:pi/10:3*pi; %x2=linspace(0,3*pi,100); y1=sin(x1); y2=cos(x2); plot(x1,y1,x2,y2) text(1.5,0.2,y2=cosx) text(2.7,0.5,y1=sinx) x1和y1
27、,x2和y2,xn 和yn分别组成一组向量对, 每一组向量对的长度可以 不同。一个向量对绘制出 一条曲线,这样可以在同 一坐标内绘制出多条曲线.,plot函数的输入参数是矩阵形式 (1) 当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (2) 当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 (3) plot(Y) :当输入参数Y是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数。当输入参数Y是复数矩阵时,则按列分别以元素实部和虚部为横、纵
28、坐标绘制多条曲线。,(4)含多个输入参数的plot函数 plot(x1,y1,x2,y2,xn,yn) 1.当输入参数都为向量时,x1和y1,x2和y2,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。一个向量对绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。 2.当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。,例 分析下列程序绘制的曲线。 x1=linspace(0,2*pi,100); x2=linspace(0,3*pi,100); x3=linspace(0,4*pi,100); y1=sin(x1); y2=1+sin
29、(x2); y3=2+sin(x3); x =x1;x2;x3;%x=x1 x2 x3 y=y1;y2;y3; %y=y1 y2 y3 plot(x,y,x1,y1-1) legend(y1=sin(x1) , y2=1+sin(x2) , y3=2+sin(x3) , y1-1=sin(x1) ,4) %该参数的选择项为0,1,2,3,4,-1; %1为默认值,可省略。,二、特殊坐标二维图形 1.对数坐标曲线 绘制对数和半对数坐标曲线的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,) semilogy(x1,y1,选项1,x2,y2,选项2,) loglog(
30、x1,y1,选项1,x2,y2,选项2,) 2.极坐标曲线 polar(theta,rho,选项) theta为极坐标极角,rho为极坐标矢径, 选项内容与plot函数相似。,3.双y轴图形(具有两个纵坐标标度的图形) 使用plotyy绘图函数,可以绘制出具有不同纵坐标标 度的两个图形。plotyy(x1,y1,x2,y2)plotyy(x1,y1,x2,y2,fun)plotyy(x1,y1,x2,y2,fun1,fun2 ) 其中x1,y1对应一条曲线,x2,y2对应另一条曲线。 横坐标的标度相同,纵坐标有两个, 左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。 fun为字符串
31、格式,选项可以为semilogy,plot, 82页例。,例 用不同标度在同一坐标内绘制曲线y1=0.2e-0.5xcos(4x) 和y2=2e-0.5xcos(x)。 x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); plotyy(x,y1,x,y2); grid on%给坐标加网格线,默认为不加即grid off,4.复数数据polt(x,y)当输入参数x,y中至少有一个是复数向量时, plot(z)当输入参数z是复数向量时, 当输入参数z是复数矩阵时,则按列分别以元素实部和虚部为横
32、、纵坐标绘制多条曲线。,5.1.2图形处理 MATLAB为用户提供了一些图形修饰函数,详细情况见下表。,1图形标注 有关图形标注函数的调用格式为: title(图形名称) xlabel(x轴说明) ylabel(y轴说明) text(x,y,图形说明) legend(图例1,图例2,) 除legend外,其他函数均可用于三维图形。,例 在0x2区间内,绘制曲线y1=2e-0.5x和y2=cos(4x),并给图形添加图形标注。 程序如下: x=0:pi/100:2*pi; y1=2*exp(-0.5*x); y2=cos(4*pi*x); plot(x,y1,x,y2); title(x fro
33、m 0 to 2pi); %加图形标题 xlabel(Variable X); %加X轴说明 ylabel(Variable Y); %加Y轴说明 text(0.8,1.5,曲线y1=2e-0.5x); %在指定位置添加图形说明 text(2.5,1.1,曲线y2=cos(4pix); legend(y1, y2) %加图例,2坐标控制 axis函数的调用格式为: axis(xmin xmax ymin ymax zmin zmax) axis函数功能丰富,常用的格式还有: axis equal:纵、横坐标轴采用等长刻度。 axis square:产生正方形坐标系(缺省为矩形)。 axis a
34、uto:使用缺省设置。 axis off:取消坐标轴。 axis on:显示坐标轴。,hold on/off命令控制是保持原有图形还是刷新 原有图形,不带参数的hold命令在两种状态之间 进行切换。 给坐标加网格线用grid命令来控制。 grid on/off命令控制是画还是不画网格线, 不带参数的grid命令在两种状态之间进行切换。 给坐标加边框用box命令来控制。 box on/off命令控制是加还是不加边框线, 不带参数的box命令在两种状态之间进行切换。,例 在同一坐标中,可以绘制3个同心圆,并加坐标控制。t=0:0.01:2*pi;%列x=exp(i*t);y=x;2*x;3*x;p
35、lot(y)grid on; %加网格线box on; %加坐标边框axis equal %坐标轴采用等刻度,3图形窗口的分隔 subplot函数的调用格式为: subplot(m,n,p) 该函数将当前图形窗口分成mn个绘图区, 即每行n个,共m行,区号按行优先编号, 且选定第p个区为当前活动区。 在每一个绘图区允许以不同的坐标系单独绘制图形。,例: x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2) grid on %添加网格 xlabel(Independent Variable X) ylabel(Dependent Variab
36、le Y1&Y2) title(Sin and Cosine Curve) text(1.5,0.3,cos(x) gtext(sin(x) axis(0 6 -1 1),例:在同一窗口中 绘制线段。 x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); y3=x; plot(x,y1,r,x,y2,b) hold on %hold off plot(x,y3,m) plot(x,y2+y1,b) % hold on保持原有图形 %hold off刷新原有图形,例:在多个窗口中 绘制图形。 x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); y3=
37、exp(x); y4=y1+y2;subplot(221); plot(x,y1); subplot(222) plot(x,y2); subplot(223); plot(x,y3); subplot(224); plot(x,y4);,5.2三维图形 5.2.1基本函数 。 5.2.2三维线条图 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,xn,yn,zn,选项n) 其中每一组x,y,z组成一组曲线的坐标参数,选项 的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。当x,y
38、,z是同维矩阵时, 则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩 阵列数。,例 绘制三维曲线。 程序如下: t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z); title(Line in 3-D Space); xlabel(X);ylabel(Y);zlabel(Z); grid on;,例:绘制下面方程在t=0 2的空间图形。x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot3(y1,y2,x,m:p) grid on xlabel(Dependent V
39、ariable Y1) ylabel(Dependent Variable Y2) zlabel(Dependent Variable X) title(Sine and Cosine Curve),5.2.3三维网格图 X,Y=meshgrid(x,y):产生三维网格数据点 将向量x(1m), y(1n),转换为三位网格数据矩阵X(nm), Y(nm). X,Y=meshgrid(1 2 3 4,5 6 7) Z=X.2+Y.2 ,mesh(X,Y,Z) X =1 2 3 41 2 3 41 2 3 4 Y =5 5 5 56 6 6 67 7 7 7 Z =26 29 34 4137 40
40、 45 5250 53 58 65,mesh建立网格图的函数。 5.2.4三维表面图 surf建立曲面图的 函数。 X,Y,Z=peaks(10) %生成三位向量 X,Y,Z=sphere(10) %生成球面向量,X,Y=meshgrid(1 2 3 4,5 6 7); Z=X.2+Y.2 surf(X,Y,Z),第六章simulink仿真,前面涉及到的仿真都是较为简单的静态仿真,为了处理更复杂的和时间有关的 动态系统,就必须学习simulink的使用。Simulink是matlab提供的实现系统建模和仿真的一个软件包。它让用户把精力从编程转向模型的构造。simulink的一个很大的优点是为用
41、户省去了很多重复的代码编写工作,用户就不必一步步的从最底层开始编起了。,启动simulink, 只需要在matlab命令窗口输入:simulink 或者单击命令窗口里工具栏上的按钮。,Simulink库浏览器,模型窗口,Simulink最让人振奋的一点就是支持图形用户界面。,演示p112到113,6.1 SIMULINK的基本操作,1、SIMULINK窗口:库浏览器、 SIMULINK模型窗口,2、 SIMULINK模块操作: 模块是建立SIMULINK模型的基本单元,用适当的方式把各种模块连接在一起就能够建立任何动态系统模型。,选取模块、放大或缩小模块、改变模块名字,双击某一模块或在模块上单
42、击鼠标右键,选择Block Parameters可以对参数进行设置,选择Block Properties可以设置和查看模块的特性。,模块的连线:移动鼠标到某一模块的输出端,鼠标的箭头会变成十字形光标,按住鼠标左键移动鼠标到另一模块的输入端,当十字光标出现重影时,释放左键即可。P115,6.2 SIMULINK的基本模块,在SIMULINK中包含: 连续系统模块库(Continuous)、 离散系统模块库(Discrete)、 数学运算模块库(Math)、 非线性模块库(Nonlinear)、 信号与系统模块库(Signal&System)、 接收(输出)模块库(Sinks)、 输入源模块库(S
43、ources)等。 每一个模块又包含很多子模块。,连续系统模块Continuous功能:,模块名,功能简介,Integrator 积分环节 Derivative 微分环节 State-Space 状态方程 Transfer Fcn 传递函数 Zero-Pole 零极点模型 Memory 把前一步的输入作为输出 Transport Delay 把输入信号按给定的时间做延迟 Variable Transport Delay 按第二个输入指定的时间把第一个输入做延迟,离散系统模块Discrete功能:,模块名,功能简介,Zero-Order Hold 零阶保持器 Unite Delay 采样保持,延
44、迟一个周期 Discrete-Time Integrator 离散时间积分 Discrete State-Space 离散状态方程 Discrete Filter 离散滤波器(IIR、FIR) Discrete Transfer Fcn 离散传递函数 Discrete Zero-Pole 离散零极点模型 First-Order Hold 一阶保持器,表6-4非线性模块库,Rate Limiter 限制输入变化率的变化大小Saturation 让输出超过某一值时能够饱和Quantizer 把输入转化成阶梯状的量化输出Backlash 由deadband设定,输出依据输入的改变而改变Dead Zo
45、ne 死区特性Relay 限制输出值在某一范围内变化Switch 根据临界值自动判断选择所接受的输入端Manual Switch 人工判断选择所接受的输入端Mutiport Swith 在多输入中选一个输出Coulumb & Viscous Friction 当输出值达到一定值时,输出才会根据输入而改变,表6-6接收模块sink功能:,模块名,功能简介,Scope 示波器 XY Graph 两个信号的关系图,用MATLAB图形显示 Display 实时数值显示 To File 保存到文件 To Workspace 输出到当前工作空间的变量 Stop Simulation 输入不为零时停止仿真,
46、用示波器模块来观察输出 Sinks库 Scope 示波器窗口 X Y graph 绘制二维的图形 Display 将数据以数字的形式显示出来 使用Workspace模块 将信号输入至Workspace模块,该模块将数据输出到Matlab的命令窗口中,以simout变量名保存下来,也可以改变变量名用另外的名字保存 时间数据用sources中的clock模块 使用返回值将输出返回Matlab命令窗口中 out1,表6-7输入源模块source功能:,模块名,功能简介,Constant 常数 Signal Generator 信号发生器 Step 阶跃信号 Ramp 线性增加或减少的信号 Sine Wave 正弦波 Repeating Sequence 重复的线性信号,类似锯齿形 Discrete Pulse Generator 离散脉冲发生器,和采样时间有关 Pulse Generator 脉冲发生器,和采样时间无关 Chirp Signal 频率不断变化的正弦信号 Clock 输出当前的仿真时间,