Matlab绘图实训
一、实训目的
1.熟悉MATLAB语言的使用
2.了解MATLAB在电子信息课程中的应用
3.掌握MATLAB矩阵输入、运算以及MATLAB数值的运算功能 4.掌握各种数据的创建、访问、扩建及缩减
5.了解利用MATLAB计算系统响应的方法;验证信号与系统的基本概念、基本理论,掌握信号与系统的分析方法。
二、实训任务和要求
1、熟练利用MATLAB语言编程对系统S平面分析
2、掌握利用MATLAB分析系统时域的方法,熟悉系统的零输入响应,零状态响应及冲击响应的步骤。
3、MATLAB是目前国际上最流行,应用最广泛的科学与工程计算软件,它由MATLAB语言,MATLAB工作环境,MATLAB图像处理系统,MATLAB数据函数库,MATLAB应用程序接口五大部分组成的集数值计算,图形处理,程序开发为一体的功能强大的系统.它应用于自动控制,数学计算,信号分析,计算机技术,图像信号处理,财务分析,航天工业,汽车工业,生物医学工程,语音处理和雷达工程等各行业,也是国内高校和研究部门进行许多科学研究的重要工具。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。MATLAB是“矩阵实验室”(MATrix LABoratoy)的缩写,它是以矩阵运算为基础的交互式程序语言,能够满足科学、工程计算和绘图的需求。与其它计算机语言相比,其特点是简洁和智能化,适应科技专业人员的思维方式和书写习惯,使得编程和调试效率大大提高。它用解释方式工作,键入持续后立即得出结果,人机交互性能好,易于调试并被科技人员所乐于接受。特别是它可适应多种平台,并且随着计算机硬软件的更新及时升级,因此MATLAB语言在国外的大学工学院中,特别是频繁进行数值计算的电子信息类学科中,已经成为每个学生都掌握的工具了。它大大提高了课程教学、解题作业、分析研究的效率。
4、系统S平面分析的基本理论
MATLAB在系统S平面分析中,一般是求系统函数的零极点分布图,画单位冲激响应和幅频响应的图形,通常按常规方法这些波形很难画出,但是应用MATLAB就可简便快捷的画出图形,使系统的分析更加便捷.例如,已知系统函数为H,利用MATLAB 1
画出该系统的零极点分布图,求出该系统的单位冲激响应和幅频响应,并判断系统的稳定性。
源程序如下:
> > % program 2 Impulse response,amp;itude fequency response and stability analysis of LTI H(s) >>Bum=[1];den=[1 2 2 1]; >>sys=tf(Bum,den); >>poles=roots(den): >>figure(1);pzmap(sys); t=O: 0.02: 10: >>h=impulse(Bum,den,t); >>figure(2);plot(t,h);
>>xlabel( t(s) );ylabel( h(t) );title( Im— pulse Response ); >>[H,W]=freqs(Bum,den); >>figure(3);plot(W,abs(H));
>>xlabel( ang.freq.\omega(rad/s) );yla— bel( H(j\omega) );title( Magnitude Respone ); > grid on
程序运行的结果如图一,图二,图三所示:
图一 系统函数零极点分布图形
图二 系统的单位冲激响应
图三 系统的幅频响应
5、MATLAB系统时域求解的基本函数 求取系统单位阶跃响应:step() 求取系统的冲激响应: impulse() y=step(num,den,t):其中num和den分别为系统传递函数描述中的分子和分母 3
多项式系数,t为选定的仿真时间向量,一般可以由t=0:step:end等步长地产生出来。该函数返回值y为系统在仿真时刻各个输出所组成的矩阵
[y,x,t]=step(num,den):此时时间向量t由系统模型的特性自动生成, 状态变量x返回为空矩阵。
[y,x,t]=step(A,B,C,D,iu):其中A,B,C,D为系统的状态空间描述矩阵,iu用来指明输入变量的序号。x为系统返回的状态轨迹。
impulse()函数的用法
求取脉冲激励响应的调用方法与step()函数基本一致。 y=impulse(num,den,t);[y,x,t]=impulse(num,den);[y,x,t]=impulse(A,B,C,D,iu,t) covar:连续系统对白噪声的方差响应 initial:连续系统的零输入响应
lsim:连续系统对任意输入的响应对于离散系统只需在连续系统对应函数前加d就可以,如dstep,dimpulse等。
三、实训过程与内容
1、采用的软件及开发平台
MATLAB7.0 计算机
2、系统的详细设计
(一)、MATLAB中系统S平面分析的基本函数
(a)Laplace拉普拉斯变换 语法: laplace(F) laplace(F,t) fourier(F,w,z) 简介:
L = laplace(F)表示对F函数关于默认自变量t做拉普拉斯变换。默认结果是关于s的函数。拉普拉斯变换完成了时域函数到频域函数的转换。
L= laplace(F,t) 会令L为t的函数,而非默认的s。
L = laplace(F,w,z)规定F是关于w的函数,而L是关于z的函数。
(b) ilaplace 拉普拉斯逆变换 用法:
F = ilaplace(L) F = ilaplace(L,y) F = ilaplace(L,y,x) 简介:
F = ilaplace(L)将L(s)变换成F(t) F = ilaplace(L,y)将L(s)变换为F(y),而非F(t) F = ilaplace(L,y,x)将L(y)变换为F(x)
(二)分析与实现
(1)由系统函数零、极点分布决定时域特性
当H(s)极点(一阶)pj中和的取值为0.06:0.03:0.06,0.5:0.25:0时,画出对应于h(t)波形,并分析波形。
解:
首先,根据s域的函数H(S),做拉普拉斯逆变换求出时域函数h(t) ,绘制h(t)的图形。
代码及波形图如下:
(1)clear;clc (2)clear;clc (3)clear;clc syms s; syms s; syms s; H=1/(s-(-0.06+0.5*j)); H=1/(s-(-0.06+0.25*j)); H=1/(s+0.06); h=real(ilaplace(H)); h=real(ilaplace(H)); h=real(ilaplace(H)); ezplot(h) ezplot(h) ezplot(h)
(4)clear;clc (5)clear;clc (6)clear;clc syms s; syms s; syms s;
H=1/(s-(-0.03+0.5*j)); H=1/(s-(-0.03+0.25*j)); H=1/(s+0.03); h=real(ilaplace(H)); h=real(ilaplace(H)); h=real(ilaplace(H)); ezplot(h) ezplot(h) ezplot(h)
(7)clear;clc (8)clear;clc (9)clear;clc syms s; syms s; syms s; H=1/(s-0.5*j); H=1/(s-0.25*j); H=1/s; h=real(ilaplace(H)); h=real(ilaplace(H)); h=real(ilaplace(H)); ezplot(h) ezplot(h) ezplot(h) 7
(10)clear;clc (11)clear;clc (12)clear;clc syms s; syms s; syms s; H=1/(s-(0.03+0.5*j)); H=1/(s-(0.03+0.25*j)); H=1/(s-0.03); h=real(ilaplace(H)); h=real(ilaplace(H)); h=real(ilaplace(H)); ezplot(h) ezplot(h) ezplot(h)
(13)clear;clc (14)clear;clc (15)clear;clc syms s; syms s; syms s; H=1/(s-(0.06+0.5*j)); H=1/(s-(0.06+0.25*j)); H=1/(s-0.06); h=real(ilaplace(H)); h=real(ilaplace(H)); h=real(ilaplace(H)); ezplot(h) ezplot(h) ezplot(h)
(2)由系统函数零、极点分布决定频率特性
若H(s)零极点分布如图1所示,讨论他们是何种类型的滤波器,画出其幅频特性曲线。
jjj000(a)(b)(c)jj0jj2j1jj2j10j0(d)0j1j2(e)j1j2(f)0 系统零极点分布图
(a) 低通滤波器 clear;clc w=0:0.01:5; w1=0;w2=0; k=0; 10
H=1./(((w-w1)*i+(k+1)).* ((w-w2)*i+(k+2))); plot(w,H)
(b) 低通滤波器 clear;clc w=0:0.01:5; w1=0;w2=0; k=0; H=(w+3)./(((w-w1)*i+(k+1)).* ((w-w2)*i+(k+2))); plot(w,H)
低通滤波器
clear;clc
11 (c)
w=0:0.01:5; H=(w+3)./((w*i+1).*(w*i+2)); plot(w,H)
带通滤波器
clear;clc w=0:0.01:5; w1=2;w2=-2; k=0; H=w./(((w-w1)*i+(k+1)).* ((w-w2)*i+(k+2))); plot(w,H)
12
(d)
高通滤波器
clear;clc w=0:0.01:5; w1= 2;w2=-2; o1=3;o2=-3; k=0; H=(w-o1).*(w-o2)./(((w-w1)*i+(k+1)).* ((w-w2)*i+(k+2))); plot(w,H) grid on
高通滤波器
clear;clc w=0:0.01:5;
13 (e)
(f)
w1=2;w2=-2; o1=3;o2=-3; k=0; H=(w-o1).*(w-o2)./(((w-w1)*i+(k+1)).* ((w-w2)*i+(k+2))); plot(w,H) grid on
(3)、零输入响应与零状态响应
零输入响应:就是系统中的输入至始至终都是0,电路反应完全靠电路中的储能设备(电容电感)来释放能量。
零状态响应:就是系统中的储能设备在时刻0之前的能量储备是0,电路反应完全靠外界的输入。
绘制地球卫星的运行轨道,以卫星轨道为平面,地球位置为坐标原点,定义卫星的二维运动状态动方程为 s[x,y,vx,vy]Tvyx3222(xy)y3(x2y2)2 vx,其中x,y表示位置,
vx,vy表示速度,可知运xyGMEsvxyvGMEMATLAB语言程序为:
R0=1;
a=12*R0; %椭圆的长半轴
b=9*R0; %椭圆的短半轴
T0=2*pi;
T=5*T0; dt=pi/1000; %dt控制卫星运动的快慢,若将1000改为100,则将变的非常快 t=[0:dt:T]\'; f=sqrt(a^2-b^2); %焦距
th=12.5*pi/180; %轨道相对xy平面的倾角
E=exp(-t/20);
x=E.*(a*cos(t)-f); y=E.*(b*cos(th)*sin(t)); z=E.*(b*sin(th)*sin(t)); subplot(2,1,1) %在同一窗口中显示上下两图形,此为显示上边图形plot3(x,y,z,\'g\') %用绿色线条显示静态图形 title(\'卫星返回地球时运动轨迹图\',\'FontSize\',12,\'FontWeight\',\'bold\')
%添加标题以及确定其字体大小和加粗等
view([117 37]) %建立三维框架 [X,Y,Z]=sphere(30); X=R0*X; Y=R0*Y; Z=R0*Z;
grid on,hold on surf(X,Y,Z),shading interp
x1=-18*R0; %x轴下边界 x2=6*R0; %x轴上边界 y1=-12*R0; %y轴下边界 y2=12*R0; %y轴上边界 z1=-6*R0; %z轴下边界 z2=6*R0; %z轴上边界
axis([x1 x2 y1 y2 z1 z2]) %调整图幅大小 view([117 37]) p=0.2; subplot(2,1,2) %显示下边的图形
comet3(x,y,z,p) %显示动态三维图形 模拟轨迹图
(4)、冲激响应和阶跃响应
冲激响应:系统的冲激响应就是电路系统在冲激信号激励下产生的零状态响应。
阶跃响应: LTIS在单位阶跃信号作用下,系统产生的零状态响应,叫做单位阶跃响应。
实例:对图1所示电路,分别求电流i(t)对激励
e(t)(t)和e(t)u(t)的冲激响应h(t)和阶跃响应g(t)。
R11i(t)ic(t)C1FiL(t)L1H4e(t)3R22
解:当e(t)(t)
解得 i(s)=(s^+6s+4)/(s^+7s+10) 当e(t)u(t)
i(s)=(s^+6s+4)/(s^*s+7s^+10s) MATLAB仿真图:冲激响应:
阶跃响应:
四、实训总结与心得体会
通过本次实训,我从中学到了很多,对MATLAB有了一定的了解。Matlab是一个基于矩阵运算的软件,它的运算功能非常强大,编程效率高,强大而智能化的作业图功能,可扩展性强,simulink动态仿真功能,主要用于仿真、验证、算法思想是否正确。我深刻体会到计算机以及应用软件在工科学生专业课学习和科研技术人员科技研发中所起到的巨大作用。它能成十成百倍的提高我们的工作效率。利用MATLAB,可以使原本复杂的计算过程大大简化,在处理矩阵、复数运算的过程中尤其明显。
在这段时间里,我们学习了MATLAB的工具的使用,熟悉其最基础的功能,锻炼了我的实际动手能力。Help是MATLAB中最有效的命令。遇到问题,通常都可以借助help解决问题。下面是我对help的一些常用方法的总结:
(1) 命令窗口直接敲“help”,你就可以得到本地机器上matlab的基本的帮助信息。
(2)对于某些不是很明确的命令,只知道大体所属范围,譬如说某个工具箱,直接在命令窗口中敲入help toolboxname,一帮可以得到本工具箱有关的信息:版本号,函数名等。
(3)知道函数名,直接用help funname就可以得到相应的帮助信息。
在以后的学习中,可以多利用MATLAB的强大计算功能来解决一些复杂的运算。这次基础强化训练让我又掌握了一款有用的软件,并且对电路题目的解法也有了新的认识,这些都是宝贵的收获。
历经了几周的实训过程,除了知识的增加和技能的提高,这一过程对我意志的锻炼和自学能力的培养对我产生了深远的影响。等到所有图表、数据、公式一一跃然纸上的时候,涌上的一种满足感使我觉得辛勤劳动终于有了回报。
我觉得想要学好MATLAB是不容易的,这是一件需要持之以恒的事,必须要坚持不懈的学习,还需要敢于开口向别人请教,更需要我们勤于思考,勤于记忆,勤于动手。程序设计是实践性和操作性很强的事情,需要我们亲自动手。因此,我们应该经常自己动手实际操作设计程序,熟悉MATLAB的操作,这对提高我们的操作能力非常有效。
这次实习中得到的这些求知、为人处世方面的道理,将伴随我整个大学生活,甚至一生,它们将是我人生道路上的一笔极其宝贵的财富,我一定会好好珍惜和利用它们。相信它们对我今后的学习将会有很大的帮助,也相信一切的一切,明天会更好。
知识是无穷无尽的,知识的获取需要一颗上进的心,老师将我们领进了门,下 18
面的路就应该我们自己去走,即是充满荆棘,也要努力奋斗往前冲。
在这次的实习过程中,老师不辞辛苦给我们指导,为我们实训做出很大努力,给我们提供很多帮助和指导,在这里也真心地向老师们说声:老师,您辛苦了!谢谢您多日来的指导。
五、参考文献
[1] 王正林.精通 MATLAB 7 .电子工业出版社.2006 [2] 陈怀琛,吴大正,高西全.MATLAB 及在电子信息课程中的应用[M].北京:电子工业出版社.2006.[3] 邱关源.电路[M].北京:高等教育出版社.2006.5.[4] 郑君里,应启行,杨为理 .信号与系统 2000年5月第二版