信号与系统 连续时间零输入与零状态
※※※※※※※※※ ※2009级信号系统 ※
※※※※
课程设计
※※※※※
※ ※ ※※
信号与系统课程设计报告书
课题名称
连续时间系统的LTI 系统的时域 仿真零输入响应与零状态响应
姓 名 学 号 院、系、部 专 业 指导教师
2011年 12 月27日
王志宏 20096412 电气工程系 电子信息工程 孙秀婷、康朝红
连续时间系统的LTI 系统的时域仿真
零输入响应与零状态响应
20096412 王志宏
一、设计目的
1、 掌握信号经过LTI 系统的时域分析方法。
2、 掌握连续时不变信号处理的基本概念、基本理论和基本方法; 3、 学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法; 4、 学会用 MATLAB 对信号进行分析和处理;
5、编程实现卷积积分或卷积和,零输入响应,零状态响应;
6、、巩固已经学过的知识,加深对知识的理解和应用,加强学科间的横向联系,
7、学会应用MATLAB 对实际问题进行仿真。学会对带有非零起始状态的LTI 系统进行仿真。
二、设计内容及要求
(1)根据实际问题建立系统的数学模型,找一个实际的电路,建立如课本第二章例2-8所示的数学模型,并计算其完全响应;
(2)用MATLAB 描述此系统;
(3)仿真实现并绘制输出信号的波形。要求用两种方法仿真实现完全响应。对仿真结果进行比较,并与理论值比较。
三、设计方法与步骤:
一般的连续时间系统分析有以下几个步骤: ①求解系统的零输入响应; ②求解系统的零状态响应; ③求解系统的全响应; ④分析系统的卷积;⑤画出它们的图形。
1.连续时间系统的零输入响应
描述n 阶线性时不变(LTI )连续系统的微分方程为: d n y d n -1y dy d m u du a 1n +a 2n -1+⋅⋅⋅⋅⋅+a n +a n +1y =b 1m +⋅⋅⋅⋅+b m +b m +1u
dt dt dt dt dt
已知y 及各阶导数的初始值为y(0),y(1)(0),… y(n-1)(0), 求系统的零输入响应。
建模
当LIT 系统的输入为零时,其零输入响应为微分方程的其次解(即令微分方程的等号右端为零),其形式为(设特征根均为单根)
p n t p 1t p 2t
y (t ) =C e +C e +⋅⋅⋅⋅+C e 12n
其中p 1,p 2,… pn 是特征方程a 1λn +a2λn-1+…+an-1λ+an =0的根,它们可以用root(a)语句求得。各系数由y 及其各阶导数的初始值来确定。对此有
C +⋅⋅⋅⋅+C =y C 1+2n 0
p 1C 1+p 2C 2+⋅⋅⋅⋅+p n C n =Dy 0…………………………………………
p n -1C +p n -1C +⋅⋅⋅⋅+p n -1C =D n -1y
122n n 0
1
写成矩阵形式为: P1n-1C 1+ P2n-1C 2+…+ Pn n-1C n =Dn-1y 0
⎡1⎢p ⎢1⎢ ⎢n -1⎣p 1
1⋅⋅⋅
p 2⋅⋅⋅ p 2n -1⋅⋅⋅
1⎤⎡C 1⎤⎡y 0⎤
⎢C ⎥⎢Dy ⎥p n ⎥0⎥⎥⎢2⎥=⎢
⎥⎢ ⎥⎢ ⎥⎥⎢⎥⎢⎥p n n -1⎦⎣C n ⎦⎣D n -1y 0⎦
即 V•C=Y0 其解为:C=V/Y0 式中 C =C C ⋅⋅⋅C n C =⎡y 0Dy 0⋅⋅⋅12⎣
1⋅⋅⋅1⎤⎡1
⎢p ⎥p ⋅⋅⋅p 12n ⎥V =⎢⎢ ⎥⎢n -1n -1n -1⎥ p p ⋅⋅⋅p 2n ⎣1⎦
V 为范德蒙矩阵,在matlab 的特殊矩阵库中有vander 。 2.卷积的计算
[]
D n -1y 0⎤⎦
连续时间信号f 1(t ) 和f 2(t ) 的卷积运算可用信号的分段求和来实现,即:
f (t ) =f 1(t )*f 2(t ) =⎰
∞
-∞
f 1(t ) f 2(t -τ) d τ=lim
∆→0
k =-∞
∑
∞
f 1(k ∆) f 2(t -k ∆) ⋅∆
如果只求当t = n ∆(n 为整数)时f (t ) 的值f (n ∆) ,则上式可得:
f (n ∆) =
式中的
∞
k =-∞
∑
∞
f 1(k ∆) f 2(t -k ∆) ⋅∆=∆∑f 1(k ∆) f 2[(n -k ) ∆]
k =-∞
∞
k =-∞
∑
f 1(k ∆) f 2[(n ∆-k ) ∆] 实际上就是连续时间信号f 1(t ) 和f 2(t ) 经等时间间
隔 均匀抽样的离散序列f 1(∆k ) 和f 2(∆k ) 的卷积和。当 足够小时,f (n ∆) 就是
卷积积分的结果——连续时间信号f (t ) 的较好数值近似。
建模
利用MATLAB 实现连续信号卷积的通用程序conv(),程序在计算出卷积积分的数值近似的同时,还绘制出f (t ) 的时域波形图。 3.连续时间系统零状态响应的数值计算
我们知道,LTI 连续系统可用如下所示的线性常系数微分方程来描述,
(j )
a y (t ) =b f ∑i ∑j (t )
(i )
i =0
j =0
N
M
例如,对于以下方程:
a 3y ''' (t ) +a 2y '' (t ) +a 1y ' (t ) +a 0y (t ) =b 3f ''' (t ) +b 2f '' (t ) +b 1f ' (t ) +b 0f (t )
可用a =[a 3, a 2, a 1, a 0],b =[b 3, b 2, b 1, b 0],输入函数u =f (t ) ,得出它的冲击响应h ,再根据LTI 系统的零状态响应y (t )是激励u (t )与冲击响应h (t )
的卷积积分。
注意,如果微分方程的左端或右端表达式中有缺项,则其向量a 或b 中的对应元素应为零,不能省略不写,否则出错。 4.连续时间系统的全响应计算
上面通过对LTI 系统函数的描述,我们可以得知:如果在系统的初始状态不为零,在激励f (t )的作用下,LTI 系统的响应称为全响应,它是零输入响应和零状态响应之和,即
y (t ) =y zi (t ) +y zs (t )
故可先求出零输入响应和零状态响应,再把两者相加,得到全响应。但简单的相加可能由于零输入与零状态的矩阵不同而不能的出正确的结果,这就需要对矩阵进行截取,使它们的阶数相同。
四、程序
课本例2-8,已知系统方程式r '(t)+3r(t)=3e(t),初状态为 r(0-)=1.5, 激励信号为e (t )=u(t ),求系统的完全响应。 程序如下: a= [1, 3];
n= length (a)-1; Y0= [3/2]; b= [3];
dt=0.01;te=6; t=0:dt:te;
jieyue =zeros(size(t)); jieyue(t>0)=1; jieyue(t==0)=1/2; u=jieyue;
p=roots(a);V=rot90(vander(p));c= Y0/V;
y1=zeros(1,length(t));
for k=1:n y1=y1+c(k)*exp(p(k)*t);end te=t(end);
dt=te/(length(t)-1); [r,p,k]=residue(b,a); h=r(1)*exp(p(1)*t); y2=conv(u,h)*dt;
y=y1(1:length(t))+y2(1:length(t)); figure(1);
subplot(3,1,1),plot(t,y1),grid
xlabel('t' ); ylabel('y1' );title(' 零输入响应' ); subplot(3,1,2),plot(t,y2(1:length(t)));grid xlabel('t' );ylabel('y2' );title(' 零状态响应' ); subplot(3,1,3),plot(t,y),grid
xlabel('t' ); ylabel('y' );title(' 全响应' ); 仿真图:
附:
roots 就是解a=[1,-1,0.9]式子的根。 按照a=[1,-1,0.9],要解的方程是:
设未知及参数设为x , 则: x^2-x+0.9=0的根
zeros(m,n)产生m×n的全0矩阵,zeros(n)产生n×n的全0方阵
例子: y "(t)+5y'(t)+6y(t)=2e'(t)+e(t)
程序如下: a=[1,3,4]; n=length(a)-1; Y0=[1,5]; b=[1,2,5]; dt=0.01;te=6; t=0:dt:te;
u=sin(2*t)+cos(t)
p=roots(a);V=rot90(vander(p));c=V\Y0'; y1=zeros(1,length(t));
for k=1:n y1=y1+c(k)*exp(p(k)*t);end 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); y2=conv(u,h)*dt;
y=y1(1:length(t))+y2(1:length(t)); figure(1);
subplot(3,1,1),plot(t,y1),grid
xlabel('t' ); ylabel('y1' );title(' 零输入响应' ); subplot(3,1,2),plot(t,y2(1:length(t)));grid xlabel('t' );ylabel('y2' );title(' 零状态响应' ); subplot(3,1,3),plot(t,y),grid
xlabel('t' ); ylabel('y' );title(' 全响应' );
y'(0)=1,y(0)=5.其中e(t)=sin(2*t)+cos(t),求系统全响应。
四、调试总结:
在matlab 语言中,用subplot 对图形进行分块,使几幅图同时显示在一个图像框里。 plot用来绘制连续的函数图形。cnov 用来求卷积,再就是利用语句对不同阶的矩阵进行截取,使之相加,这点很重要,因为简单的零输入响应与零状态响应相加,可能由于阶数不同而无法得出结果,所以一定要使两者的阶数相同。
五、设计总结:
MATLAB 语言是一种广泛应用于工程计算及数值分析 领域的新型高级语言,Matlab 功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。特别是Matlab 还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。
在老师和同学的帮助下,我顺利的完成了这个课程设计,通过这次连续时间系统的时域分析课程设计,让我了解了关于MATLAB 软件在连续信号时域处理方面的应用,又一次学习了MATLAB 软件的使用和程序的设计,MATLAB 的仿真使我更加深入的了解了信号时域处理的过程 ,对我对数字信号处理的理解加深了一步。MATLAB 拥有强大的数据仿真能力,在生产和研究中起着非常大的作用。
在设计过程中,通过查阅大量的资料,我选择用矩阵计算的方法来求连续
时间系统的零输入响应,卷积则是利用matlab 中的conv 语句求得,再根据LTI 系统的零状态响应y (t )是激励u (t )与冲击响应h (t )的卷积积分,求得零状态响应,全响应则为零输入响应与零状态响应之和
以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每步骤的内容以确保程序的正确性上都有了很大程度的提高。在进行试验的过程中,在老师和同学的耐心帮助下解决了许多问题,在这个小学期里我收获的远远大于我的付出。
六、参考文献:
[1] 郑君里,杨为理. 信号与系统引论. 北京:高等教育出版社,2009
[2] 孙详,徐流美,吴清.MATLAB7.0基础教程. 北京:清华大学出本社,2005 [ 3] 谷源涛,郑君里. 信号与系统—MATLAB 综合试验.. 高等教育出版社,2009