1、湖南文理学院系统建模与设计报告专业班级:电信 08104 学生姓名:湛 江 丰 学生学号:5 指导教师:曹 斌 芳 设计时间:2010 年 12 月 16 日 一、课程设计题目:基于 MATLAB 的连续时间 LTI 系统的时域分析二、基本要求: 掌握连续时不变信号处理的基本概念、基本理论和基本方法; 学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法; 学会用 MATLAB 对信号进行分析和处理; 编程实现卷积积分或卷积和,零输入响应,零状态响应; 撰写课程设计论文,用信号处理基本理论分析结果。三、设计方法与步骤:一般的连续时间系统分析有以下几个步骤: 求解系统的零输入响应; 求
2、解系统的零状态响应; 求解系统的全响应; 分析系统的卷积;画出它们的图形. 下面以具体的微分方程为例说明利用MATLAB 软件分析系统的具体方法.1连续时间系统的零输入响应描述 n 阶线性时不变(LTI)连续系统的微分方程为:已知 y 及各阶导数的初始值为 y(0),y(1)(0), y(n-1)(0), 求系统的零输入响应。建模当 LIT 系统的输入为零时,其零输入响应为微分方程的其次解(即令微分方程的等号右端为零) ,其形式为(设特征根均为单根)其中 p1,p2,pn 是特征方程 a1n+a2n-1+an+an=0 的根,它们可以用 root(a)语句求得。各系数 由 y 及其各阶导数的初
3、始值来确定。对此有写成矩阵形式为: P 1n-1C1+ P2n-1C2+ Pnn-1Cn=Dn-1y0 112 1 1mnn mndydyduduaabbttttt 12() nptptptytCeCe120ny0CpCD11112nnnnp1012211112 0nnn nnnCyppDyAAA即 VC=Y0 其解为:C=VY 0式中V 为范德蒙矩阵,在 matlab 的特殊矩阵库中有 vander。以下面式子为例:y(0_)=1,y(0_)=5;MATLAB 程序:a=input(输入分母系数 a=a1,a2,.=);n=length(a)-1;Y0=input(输入初始条件向量 Y0=y
4、0,Dy0,D2y0,.=);p=roots(a);V=rot90(vander(p);c=VY0;dt=input(dt=);te=input(te=);t=0:dt:te;y=zeros(1,length(t);for k=1:n y=y+c(k)*exp(p(k)*t);endplot(t,y);gridxlabel(t) ;ylabel(y);title(零输入响应);程序运行结果:用这个通用程序来解一个三阶系统,运行此程序并输入a=1,5,4 Y0=1,5 dt=0.01 te=6结果如下图:根据图可以分析零输入响应,它的起始值与输入函数无关,只与它的初始状态值有关,其起始值等于 y
5、(0_)的值。随着时间的推移,最后零输入响应的值无限的趋近于 0。121112nnnppAA12nCC10nyDy ()5()4()()4()yttytftft0 1 2 3 4 5 600.20.40.60.811.21.41.61.8ty入入入入入2卷积的计算连续时间信号 和 的卷积运算可用信号的分段求和来实现,即:1()ft2ft1212120()*()lim()kfttfftdftk 如果只求当 t n(n 为整数)时 f (t)的值 f (n) ,则上式可得:1212()() )k kfft k 式中的 实际上就是连续时间信号 和 经等时间间12kfnk 1(ft2)ft隔 均匀抽样
6、的离散序列 和 的卷积和。当足够小时, 就是1()f2()fk()fn卷积积分的结果连续时间信号f (t)的较好数值近似。建模下面是利用MATLAB 实现连续信号卷积的通用程序 conv(),该程序在计算出卷积积分的数值近似的同时,还绘制出f (t)的时域波形图。应注意,程序中是如何设定f ( t)的时间长度。MATLAB程序:f1=input(输入函数f1=);f2=input(输入函数f2=);dt=input(dt=);y=conv(f1,f2);plot(dt*(1:length(y)-1),y);grid on;title(卷积);xlabel(t); ylabel(f1*f2)程序
7、运行结果:输入以下数据:f1=sin(3*t) f2=cos(3*t+2) dt=0.01得出图形如下:0 2 4 6 8 10 12-300-200-1000100200300400 入入tf1*f23连续时间系统零状态响应的数值计算我们知道,LTI 连续系统可用如下所示的线性常系数微分方程来描述,()()00NMi ji jaytbft例如,对于以下方程: 32103210()()()()()()()()tttaytbftftbftft可用 输入函数 ,得出它的冲击10321,aabu响应 h ,再根据 LTI 系统的零状态响应 y( t)是激励 u(t)与冲击响应h(t)的卷积积分。注意
8、,如果微分方程的左端或右端表达式中有缺项,则其向量 a 或 b 中的对应元素应为零,不能省略不写,否则出错。求函数的零状态响应及初始状态 。输入函数 。(0)()0zszsyy()sin(3*)cos(2*)fttt建模先求出系统的冲击响应,写出其特征方程2540求出其特征根为 p 和 p,及相应的留数 r,r;则冲击响应为 54(24tttf12()ptpthtre输入 y(t)可用输入 u(t)与冲击响应 h(t)的卷积求得。MATLAB程序:a=input(输入分母系数 a=a1,a2,.=);b=input(输入输入信号系数 b=b1,b2,.=);dt=input(dt=);te=i
9、nput(te=);t=0:dt:te;u=input(输入函数 u=);te=t(end);dt=te/(length(t)-1);r,p,k=residue(b,a);h=r(1)*exp(p(1)*t)+r(2)*exp(p(1)*t);subplot(2,1,1),plot(t,h);gridtitle(冲击函数);y=conv(u,h)*dt;subplot(2,1,2),plot(t,y(1:length(t);gridtitle(零状态响应);程序运行结果执行这个程序,取 a=1,5,4 b=2,4 dt=0.01 te=6 sin(3*)cos(2*)utt得出图形如下:由于初
10、始状态为零,所以零状态的起始值也为零,即h(t )包含了连续系统的固有特性,与系统的输入无关。只要知道了系统的冲激响应,即可求得系统在不同输入时产生的输出。因此,求解系统的冲激响应 h对进行连续时间系统的分析具有非常重要的意义0 1 2 3 4 5 600.511.52 入入入入0 1 2 3 4 5 6-1-0.500.51 入入入入入4连续时间系统的全响应计算上面通过对 LTI 系统函数的描述,我们可以得知:如果在系统的初始状态不为零,在激励 f(t)的作用下,LTI 系统的响应称为全响应,它是零输入响应和零状态响应之和,即()()()zizsyttyt故可先求出零输入响应和零状态响应,再
11、把两者相加,得到全响应。但简单的相加可能由于零输入与零状态的矩阵不同而不能的出正确的结果,这就需要对矩阵进行截取,使它们的阶数相同。例如,对于以下方程:初始值为:y(0_)=1,y(0_)=5;输入函数为: ()sin(3*)cos(2*)fttt求它的全响应。建模先根据零输入响应的求法,得出零输入响应 y1(t) 。再根据零状态响应的求法,得出零状态响应 y2(t) 。最后,全响应 y 等于零输入响应 y1(t)加上零状态响应 y2(t) ,得出全响应。MATLAB 程序:a=input(输入分母系数 a=a1,a2,.=);n=length(a)-1;Y0=input(输入初始条件向量 Y
12、0=y0,Dy0,D2y0,.=);b=input(输入输入信号系数 b=b1,b2,.=);u=input(输入函数 u=);dt=input(dt=);te=input(te=);t=0:dt:te;p=roots(a);V=rot90(vander(p);c=VY0;y1=zeros(1,length(t);for k=1:n y1=y1+c(k)*exp(p(k)*t);endte=t(end);dt=te/(length(t)-1);r,p,k=residue(b,a);h=r(1)*exp(p(1)*t)+r(2)*exp(p(1)*t);y2=conv(u,h)*dt;y=y1(
13、1:length(t)+y2(1:length(t);figure(1);subplot(3,1,1),plot(t,y1),gridxlabel(t); ylabel(y1);title(零输入响应);subplot(3,1,2),plot(t,y2(1:length(t);gridxlabel(t);ylabel(y2);title(零状态响应); ()5()4()()4()ytytytftftsubplot(3,1,3),plot(t,y),gridxlabel(t); ylabel(y);title(全响应响应);程序运行结果执行程序,取 a=1,5,4 Y0=1,5 b=1,2,4
14、u=sin(3*t)+cos(2*t) dt=0.01 te=6结果如下图:在零输入响应中任一时刻取值 y1,在零状态响应的对应时刻取值 y2,再在全响应的对应时刻取值 y。可以得出:y=y1+y2。0 1 2 3 4 5 600.511.52ty1入入入入入0 1 2 3 4 5 6-101ty2入入入入入0 1 2 3 4 5 6-10123ty入入入入入四、调试总结:在 matlab 语言中,用 subplot 对图形进行分块,使几幅图同时显示在一个图像框里。 plot 用来绘制连续的函数图形。cnov 用来求卷积,再就是利用语句对不同阶的矩阵进行截取,使之相加,这点很重要,因为简单的零
15、输入响应与零状态响应相加,可能由于阶数不同而无法得出结果,所以一定要使两者的阶数相同。五、设计总结:在老师的帮助下我顺利的完成了这个课程设计,通过这次连续时间系统的时域分析课程设计,让我了解了关于 MATLAB 软件在连续信号时域处理方面的应用,又一次学习了 MATLAB 软件的使用和程序的设计,MATLAB 的仿真使我更加深入的了解了信号时域处理的过程 ,对我对数字信号处理的理解加深了一步。MATLAB 拥有强大的数据仿真能力,在生产和研究中起着非常大的作用。在设计过程中,通过查阅大量的资料,我选择用矩阵计算的方法来求连续时间系统的零输入响应,卷积则是利用 matlab 中的 conv 语句
16、求得,再根据LTI 系统的零状态响应 y(t)是激励 u(t)与冲击响应 h(t)的卷积积分,求得零状态响应,全响应则为零输入响应与零状态响应之和。MATLAB 语言是一种广泛应用于工程计算及数值分析 领域的新型高级语言,Matlab 功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。特别是 Matlab 还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。因此,选择用 Matlab 进行课程设计。在这过程中我遇到了所多的难题,通过与老师的交流和学习,让我学会了很多在课堂上没有理解的难点。同时也进一步加深了对 Matlab 的理解和认识。参考资料:信号与线性系统分析(第 4 版) 主编 : 吴大正MATLAB 及在电子信息课程中的应用(第 2 版) 陈怀琛 吴大正 高西全 编著