资源描述
※※※※※※※※※
※
※※
※※
※※※※※※※※※
2008级信号与系统课程设计
信号与系统课程设计报告书
课题名称
零输入响应与零状态响应
姓 名
梁何磊
学 号
20086354
院、系、部
电气系
专 业
电子信息工程
指导教师
孙秀婷 康朝红
2011年1月11日
连续时间系统的LTI系统的时域仿真
-------零输入响应与零状态响应
20086354 梁何磊
一、设计目的
掌握信号经过LTI系统的时域分析方法。 巩固已经学过的知识,加深对知识的理解和应用,加强学科间的横向联系,学会应用MATLAB对实际问题进行仿真。学会对带有非零起始状态的LTI系统进行仿真。
二、设计要求
(1)根据实际问题建立系统的数学模型,对给定的如下电路,课本第二章例2-8,参数如图所示;建立系统的数学模型,并计算其完全响应;
(2)用MATLAB描述此系统;
(3)仿真实现并绘制输出信号的波形。要求用两种方法仿真实现完全响应。对仿真结果进行比较,并与理论值比较。
三、设计方法与步骤:
一般的连续时间系统分析有以下几个步骤: ①求解系统的零输入响应; ②求解系统的零状态响应; ③求解系统的全响应; ④分析系统的卷积;⑤画出它们的图形. 下面以具体的微分方程为例说明利用MATLAB 软件分析系统的具体方法.
1.连续时间系统的零输入响应
描述n阶线性时不变(LTI)连续系统的微分方程为:
已知y及各阶导数的初始值为y(0),y(1)(0),… y(n-1)(0), 求系统的零输入响应。
建模
当LIT系统的输入为零时,其零输入响应为微分方程的其次解(即令微分方程的等号右端为零),其形式为(设特征根均为单根)
其中p1,p2,…,pn是特征方程a1λn+a2λn-1+…+anλ+an=0的根,它们可以用root(a)语句求得。各系数 由y及其各阶导数的初始值来确定。对此有
………………………………………………………………………………………
写成矩阵形式为: P1n-1C1+ P2n-1C2+…+ Pnn-1Cn=Dn-1y0
即 V•C=Y0 其解为:C=V\Y0
式中
V为范德蒙矩阵,在matlab的特殊矩阵库中有vander。
以下面式子为例:
初始条件为,;
MATLAB程序:
a=input('输入分母系数a=[a1,a2,...]=');
n=length(a)-1;
Y0=input('输入初始条件向量 Y0=[y0,Dy0,D2y0,...]=');
p=roots(a);V=rot90(vander(p));c=V\Y0';
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);end
plot(t,y);grid
xlabel('t') ;ylabel('y');
title('零输入响应');
程序运行结果:
用这个通用程序来解一个三阶系统,运行此程序并输入
a=[1,2,3] Y0=[2,7] dt=0.002 te=7
结果如下图:根据图可以分析零输入响应,它的起始值与输入函数无关,只与它的初始状态值有关,其起始值等于y(0_)的值。随着时间的推移,最后零输入响应的值无限的趋近于0。
2.连续时间系统零状态响应的数值计算
我们知道,LTI连续系统可用如下所示的线性常系数微分方程来描述,
例如,对于以下方程:
可用输入函数,得出它的冲激响应h ,再根据LTI系统的零状态响应y(t)是激励u(t)与冲激响应h(t)的卷积积分。
注意,如果微分方程的左端或右端表达式中有缺项,则其向量a或b中的对应元素应为零,不能省略不写,否则出错。
求函数的零状态响应
及初始状态。输入函数。
建模
先求出系统的冲激响应,写出其特征方程
求出其特征根为p和p,及相应的留数r,r;则冲激响应为
输入y(t)可用输入u(t)与冲激响应h(t)的卷积求得。
MATLAB程序:
a=input('输入分母系数a=[a1,a2,...]=');
b=input('输入输入信号系数b=[b1,b2,...]=');
dt=input('dt=');te=input('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);grid
title('冲激函数');
y=conv(u,h)*dt;
subplot(2,1,2),
plot(t,y(1:length(t)));grid
title('零状态响应');
程序运行结果
执行这个程序,取a=[1,2,3] b=[4,6] dt=0.001 te=7
得出图形如下:
由于初始状态为零,所以零状态的起始值也为零,即h(t)包含了连续系统的固有特性,与系统的输入无关。只要知道了系统的冲激响应,即可求得系统在不同输入时产生的输出。因此,求解系统的冲激响应h对进行连续时间系统的分析具有非常重要的意义
3.连续时间系统的全响应计算
上面通过对LTI系统函数的描述,我们可以得知:如果在系统的初始状态不为零,在激励f(t)的作用下,LTI系统的响应称为全响应,它是零输入响应和零状态响应之和,即
故可先求出零输入响应和零状态响应,再把两者相加,得到全响应。但简单的相加可能由于零输入与零状态的矩阵不同而不能的出正确的结果,这就需要对矩阵进行截取,使它们的阶数相同。
例如,对于以下方程:
初始值为:y(0_)=2, ;
输入函数为:
求它的全响应。
建模
先根据零输入响应的求法,得出零输入响应y1(t)。再根据零状态响应的求法,得出零状态响应y2(t)。最后,全响应y等于零输入响应y1(t)加上零状态响应y2(t),得出全响应。
MATLAB程序:
a=input('输入分母系数a=[a1,a2,...]=');
n=length(a)-1;
Y0=input('输入初始条件向量 Y0=[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=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('全响应响应');
程序运行结果
执行程序,取 a=[1,2,3] Y0=[2,7] b=[1,4,6]
u=sin(2*t)+cos(5*t) dt=0.001 te=7
结果如下图:在零输入响应中任一时刻取值y1,在零状态响应的对应时刻取值y2,再在全响应的对应时刻取值y。可以得出:y=y1+y2。
四、调试总结:
在matlab语言中,用subplot对图形进行分块,使几幅图同时显示在一个图像框里。 plot用来绘制连续的函数图形。cnov用来求卷积,再就是利用语句对不同阶的矩阵进行截取,使之相加,这点很重要,因为简单的零输入响应与零状态响应相加,可能由于阶数不同而无法得出结果,所以一定要使两者的阶数相同。
五、设计总结:
通过查阅大量的资料,我选择用矩阵计算的方法来求连续时间系统的零输入响应,卷积则是利用matlab中的conv语句求得,再根据LTI系统的零状态响应y(t)是激励u(t)与冲激响应h(t)的卷积积分,求得零状态响应,全响应则为零输入响应与零状态响应之和。
MATLAB语言是一种广泛应用于工程计算及数值分析 领域的新型高级语言,Matlab功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。特别是Matlab还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。MATLAB拥有强大的数据仿真能力,在生产和研究中起着非常大的作用。
因此,选择用Matlab进行课程设计。在这过程中我遇到了所多的难题,通过与老师的交流和学习,让我学会了很多在课堂上没有理解的难点。同时也进一步加深了对Matlab的理解和认识。MATLAB的仿真使我更加深入的了解了信号时域处理的过程 ,对我对数字信号处理的理解加深了一步。
六、参考资料:
信号与线性系统分析(第4版)
主编 : 吴大正
MATLAB及在电子信息课程中的应用(第2版)
陈怀琛 吴大正 高西全 编著
(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)
展开阅读全文