实验二LTI系统的时域分析.docx
- 文档编号:5330314
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:21
- 大小:87.50KB
实验二LTI系统的时域分析.docx
《实验二LTI系统的时域分析.docx》由会员分享,可在线阅读,更多相关《实验二LTI系统的时域分析.docx(21页珍藏版)》请在冰点文库上搜索。
实验二LTI系统的时域分析
实验二LTI系统的时域分析
实验目的
1.理解卷积的含义,熟悉连续时间信号与离散时间信号的卷积计算方法。
2.熟悉应用MATLAB求解连续与离散系统在任意激励下响应的求解方法
3.熟悉连续时间系统的单位冲激响应、阶跃响应的意义及求解方法
实验原理
1.连续时间系统的描述
对于连续的LTI系统,当系统输入为f(t),输出为y(t),则输入与输出之间满足如下的
nm
线性常系数微分方程:
'、a』⑴(t)=vbjf(j)(t)。
MATLAB中,用两个向量
i=0j=0
a=[an,an“..,ao],b=[bm,bm“..,bo]完全表征系统,注意两个向量对应的幕次由高到低
排列。
2.连续时间系统的响应
当系统输入为单位冲激信号3(时产生的零状态响应称为系统的单位冲激响应,用h(t)
表示。
若输入为单位阶跃信号£t(时,系统产生的零状态响应则称为系统的单位阶跃响应,
记为g(t),如下图所示。
系统的单位冲激响应h(t)包含了系统的固有特性,它是由系统本身的结构及参数所决定
的,与系统的输入无关。
我们只要知道了系统的冲激响应,即可求得系统在不同激励下产生
的响应。
因此,求解系统的冲激响应h(t)对我们进行连续系统的分析具有非常重要的意义。
单位冲激与单位阶跃响应
在MATLAB中有专门用于求解连续系统冲激响应和阶跃响应,并绘制其时域波形的
函数impulse()和step()。
如果系统输入为f(t),冲激响应为h(t),系统的零状态响应为y(t),则有:
y(t)二h(t)f(t)。
若已知系统的输入信号及初始状态,我们便可以用微分方程的经典时域求解方法,求出系统的响应。
但是对于高阶系统,手工计算这一问题的过程非常困难和繁琐。
在MATLAB中,应用lsim()函数很容易就能对上述微分方程所描述的系统的响应进行仿真,求出系统在任意激励信号作用下的响应。
lsim()函数不仅能够求出连续系统在指定
的任意时间范围内系统响应的数值解,而且还能同时绘制出系统响应的时域波形图。
以上各函数的调用格式如下:
⑴impulse()函数
函数impulse()将绘制出由向量a和b所表示的连续系统在指定时间范围内的单位冲激响应h(t)的时域波形图,并能求出指定时间范围内冲激响应的数值解。
impulse(b,a)以默认方式绘出由向量a和b所定义的连续系统的冲激响应的时域波
形。
impulse(b,a,t0)绘出由向量a和b所定义的连续系统在0~to时间范围内冲激响应的时域波形。
impulse(b,a,t1:
p:
t2)绘出由向量a和b所定义的连续系统在t1~t2时间范围内,并且以时间间隔p均匀取样的冲激响应的时域波形。
y=impulse(b,a,t1:
p:
t2)只求出由向量a和b所定义的连续系统在t1~t2时间范围内,
并且以时间间隔p均匀取样的冲激响应的数值解,但不绘出其相应波形。
⑵step()函数
函数step()将绘制出由向量a和b所表示的连续系统的阶跃响应,在指定的时间范围内
的波形图,并且求出数值解。
和impulse()函数一样,step()也有如下四种调用格式:
step(b,a)
step(b,a,t0)
step(b,a,t1:
p:
t2)
y=step(b,a,t1:
p:
t2)
上述调用格式的功能和impulse()函数完全相同,所不同只是所绘制(求解)的是系统的阶跃响应g(t),而不是冲激响应h(t)。
卷积的计算
Conv()函数可以实现两个信号的卷积;
举例:
x1=0:
0.1:
2;x2=3:
0.1:
6;t1=-1:
0.1:
1;t2=-2:
0.1:
1;
s=conv(x1,x2);
tmin=t1
(1)+t2
(1);
tmax=t1(end)+t2(end);
120
100.-
80■-
60■-
40..
20..
-3-2.5-2-1.5-1-0.500.511.52
plot(tmin:
0.1:
tmax,s);
零输入响应与零状态响应
(1)lsim()函数求零状态响应与全响应
根据系统有无初始状态,lsim()函数有如下两种调用格式:
①系统无初态时,调用lsim()函数可求出系统的零状态响应,其格式如下:
lsim(b,a,x,t)绘出由向量a和b所定义的连续系统在输入为x和t所定义的信号时,
系统零状态响应的时域仿真波形,且时间范围与输入信号相同。
其中x和t是表示输入信号
的行向量,t为表示输入信号时间范围的向量,x则是输入信号对应于向量t所定义的时间
点上的取样值。
y=lsim(b,a,x,t)与前面的impulse和step函数类似,该调用格式并不绘制出系统的零状态响应曲线,而只是求出与向量t定义的时间范围相一致的系统零状态响应的数值解。
②系统有初始状态时,调用lsim()函数可求出系统的全响应,格式如下:
lsim(A,B,C,D,e,t,XO)绘出由系数矩阵A,B,C,D所定义的连续时间系统在输入为e
和t所定义的信号时,系统输出函数的全响应的时域仿真波形。
t为表示输入信号时间范围
的向量,e则是输入信号e(t)对应于向量t所定义的时间点上的取样值,X0表示系统状态变量X=[x1,x2,…..xn]'在t=0时刻的初值。
[Y,X]=lsim(A,B,C,D,e,t,X0)不绘出全响应波形,而只是求出与向量t定义的时间范围相一致的系统输出向量Y的全响应以及状态变量X的数值解。
显然,函数lsim()对系统响应进行仿真的效果取决于向量t的时间间隔的密集程度,t
的取样时间间隔越小则响应曲线越光滑,仿真效果也越好。
说明:
(1)当系统有初始状态时,若使用lsim()函数求系统的全响应,就要使用系统的状态空间
描述法,即首先要根据系统给定的方式,写出描述系统的状态方程和输出方程。
假如系统原
来给定的是微分方程或系统函数,则可用相变量法或对角线变量等方法写出系统的状态方程和输出方程。
其转换原理如前面实验四所述。
(2)显然利用lsim()函数不仅可以分析单输入单输出系统,还可以分析复杂的多输入多输出系统。
例题1:
若某连续系统的输入为e(t),输出为r(t),系统的微分方程为:
y''(t)5y'(t)6y(t)=3f'(t)2f(t)
1求该系统的单位冲激响应h(t)及其单位阶跃响应g(t)。
2若f(t)二e't;(t)求出系统的零状态响应y(t)
分析:
①求冲激响应及阶跃响应的MATLAB程序:
a=[156];b=[32];
subplot(2,1,1),impulse(b,a,4)
subplot(2,1,2),step(b,a,4)
运行结果如右:
ImpulseResponse
3.„,.,„„
2
1
-
0
-1
11
1
I
l
l
l
0
0.51
1.5
2
2.5
3
3.5
4
Time(sec)
0.8
StepResponse
FP
1
1
0.6
-
_>
0.4
Lf
-
0.2
-
-
0
ii
I
l
n
0
0.51
1.5
2
2.5
3
3.5
4
②求零状态响应的MATLAB程序:
a=[156];b=[32];
p1=0.01;%定义取样时间间隔为0.01
t1=0:
p1:
5;%定义时间范围
x仁exp(-2*t1);%定义输入信号
Isim(b,a,x1,t1),%对取样间隔为0.01时系统响应进行仿真holdon;%保持图形窗口以便能在同一窗口中绘制多条曲线
p2=0.5;%定义取样间隔为0.5
t2=0:
p2:
5;%定义时间范围
x2=exp(-2*t2);%定义输入信号
lsim(b,a,x2,t2),holdoff%对取样间隔为0.5时系统响应进行仿真并解除保持
运行结果如下:
o
bnusrStrutstjonResuts
1.522533.54^.5
t™rsw)
.0o.
启Q.
o
零输入响应
描述n阶线性时不变(LTI)连续系统的微分方程为:
dnn-1
中今比冬¥
已知ty及各阶导数的初始值为
and-;an"F黑bm1u
y(0)dt:
1)(0),…y(n--t0),求系统的零输入响应。
当LIT系统的输入为零时,其零输入响应为微分方程的其次解(即令微分方程的等号右
端为零),其形式为(设特征根均为单根)
y(t)=GepitC2ep2tCnepnt
其中p1,p2,…,pn是特征方程al入n+a2入-1+…+an入+an=0的根,它们可以用root(a)语
句求得。
各系数由y及其各阶导数的初始值来确定。
对此有
C1C2Cn=y。
P1C1P2C2PnCn二Dy。
严1卩2飞pnn_1C^Dn-1y0
写成矩阵形式为
11
IP1P2
1C1y。
pnC2Dy0
P2
n-1
n-1
Pn
n
n-1
_Dy°
式中
C=CiC2■
Cn】
C=[y°Dy。
D^y。
-
1
1…
1
1
Pl
P2…
Pn
V=
nA
nA
n」
p>
P2■"
Pn
即V?
C=YO
其解为:
C=V\Y0
V为范德蒙矩阵,在MATLAB的特殊矩阵库中有vander。
以下面式子为例:
y〃(t)+3y,(t)+6y(t)=6f'(t)-8f,(t)
初始条件为y(o_)=o,y'(o_)=io;
MATLAB程序:
a=[1,3,6];
n=length(a)-1;Y0=[0,10];
p=roots(a);V=rot90(vander(p));c=V\YO';dt=0.002;te=9;
t=0:
dt:
te;y=zeros(1,length(t));
fork=1:
ny=y+c(k)*exp(p(k)*t);endplot(t,y);gridxlabel('t');ylabel('y');title('零输入响应');
离散时间系统
LTI离散系统中,其输入和输出的关系由差分方程描述:
nm
(前向差分方程)
、qy(ki)八bjf(kj)
ijzQ
^y(k-i)=vbjf(k-n•j)(后向差分方程)
i=0jz0
当系统的输入为单位序列&k)时产生的零状态响应称为系统的单位函数响应,用h(k)表示。
当输入为 g(k),如下图所示。 如果系统输入为e(k),冲激响应为h(k),系统的零状态响应为y(k),则有: y(k)=h(k)”f(k)。 与连续系统的单位冲激响应h(t)相类似,离散系统的单位函数响应h(k)也包含了系统的固有特性,与输入序列无关。 我们只要知道了系统的单位函数响应,即可求 得系统在不同激励信号作用下产生的响应。 因此,求解系统的单位函数响应h(k)对我们进行 离散系统的分析也同样具有非常重要的意义。 MATLAB中为用户提供了专门用于求解离散系统单位函数响应,并绘制其时域波形 的函数impz()。 同样也提供了求离散系统响应的专用函数filter(),该函数能求出由差分方 程所描述的离散系统在指定时间范围内的输入序列作用时,产生的响应序列的数值解。 当系 统初值不为零时,可以使用dlsim()函数求出离散系统的全响应,其调用方法与前面连续系 统的lsim()函数相似。 另外,求解离散系统阶跃响应可以通过如下两种方法实现: 一种是直 接调用专用函数dstep(),其调用方法与求解连续系统阶跃响应的专用函数step()的调用方法 相似;另一种方法是利用求解离散系统零状态响应的专用函数filter(),只要将其中的激励 信号看成是单位阶跃信号 函数的调用格式分别如下: ⑴impz()函数 impz(b,a)以默认方式绘出由向量a和b所定义的离散系统单位函数响应的时域波 形。 impz(b,a,n)绘出由向量a和b所定义的离散系统在0~n(n必须为整数)的离散时间范围内单位函数响应的时域波形。 impz(b,a,n1: n2)绘出由向量a和b所定义的离散系统在n1~n2(n1、n2必须为整数)的离散时间范围内单位函数响应的时域波形。 y=impz(b,a,n1: n2)求出由向量a和b所定义的离散系统在n1~n2(n1、n2必须 为整数)的离散时间范围内单位函数响应的数值解,但不绘出波形。 ⑵filter()函数 filter(b,a,x)其中a和b与前面相同,x是包含输入序列非零样值点的的行向量。 此命令将求出系统在与x的取样时间点相同的输出序列样值。 例题: 已知描述离散系统的差分方程为: y(k)-0.25y(k-1)0.5y(k-2)=f(k)f(k-1),且已知系统输入序列为f(k)= (2)k;(k), 1求出系统的单位函数响应h(k)在-3~10离散时间范围内响应波形。 2求出系统零状态响应在0~15区间上的样值;并画出输入序列的时域波形以及系统零状 态响应的波形 分析: ①求系统的单位函数响应的MATLAB程序: a=[1,-0.25,0.5];b=[1,1,0]; impz(b,a,-3: 10),title('单位响应') %绘出单位函数响应在-3~10区间上的波 形 运行结果如图a。 ②求零状态响应的MATLAB程序: a=[1,-0.25,0.5];b=[1,1,0] k=0: 15;%定义输入序列取值范围 x=(1/2).Ak;%定义输入序列表达式 y=filter(b,a,x)%求解零状态响应样值 subplot(2,1,1),stem(k,x)%绘制输入序列的波形 title('输入序列') subplot(2,1,2),stem(k,y)%绘制零状态响应的波形 title('输出序列') 运行结果如下: y= Columns1through10 -0 1.00001.75000.6875-0.3281-0.23830.19820.2156-0.0218-0.1015 .0086 Columns11through16 0.05150.0187-0.0204-0.01410.00690.0088 图a.①运行结果 %「r— 图b.②运行结果 实验内容 1.已知描述系统的微分方程和激励信号e(t)分别如下,用MATLAB绘出系统单位冲激响 应、单位阶跃响应以及系统零状态响应的波形4。 y''(t)4y'(t)4y(t)=f'(t)3f(t);f(t)=e「(t) a=[144]; b=[13]; subplot(2,2,1); impulse(b,a,4),title('单位冲激响应'); subplot(2,2,2); step(b,a,4),title('单位阶跃响应'); subplot(2,2,3); t=0: 0.01: 5; x=exp(-1*t); lsim(b,a,x,t),title('零状态响应'); 1 单位冲激响应 0.5 0 01234 Time(sec) 0.8 0.6 0.4 0.2 0 单位阶跃响应 0123 Time(sec) 零状态响应 1 0.5 01''' 012345 Time(sec) 2.请用MATLAB分别求出下列差分方程所描述的离散系统,在0~20时间范围内的单位脉 冲响应、阶跃响应和系统零状态响应的数值解,并绘出其波 (1) y(k)2y(k—1)y(k—2)=f(k);f(k)=4;(k) 单位冲激响应y=1-13-45-67-89-1011-1213-1415-1617-1819-2021 单位阶跃响应y=1.0000-0.1353-0.0996-0.0549-0.0270-0.0124-0.0055-0.0023-0.0010 -0.0004-0.0002-0.0001-0.0000-0.0000-0.0000-0.0000-0.0000-0.0000-0.0000-0.0000零状态响应y= Columns1through8 0.12500 Columns9through16 0.12500 Columns17through21 0.12500 a=[1,2,1]; b=[1,0,0]; k=0: 20;x=0.25.*heaviside(k);y=filter(b,a,x) subplot311; impz(b,a,0: 20),title( subplot312; dstep(b,a,0: 20),title(subplot(3,1,3),stem(k,y)title('零状态响应’); 0.1250 0.1250 0.1250 单位脉冲响应’); '单位阶跃响应’); 0.1250 0.1250 0.1250 0.1250 0.1250 单位脉冲响应 单位阶跃响应 ⑵一带通滤波器可由下列差分方程描述: y(k)0.81y(k-2)二f(k)-f(k-2),其中 f(k)为系统输入,y(k)为系统输出。 请求出当激励为 f(k)二[1010cos(kn/2)10cos(kn)1;(k)(选取适当的n值)时滤波器的稳态输出。 a=[1,0,0.81];b=[1,0,-1]; k=0: 10; x=10+10.*cos(2.*k)+10.*cos(4.*k); y=filter(b,a,x);subplot311; impz(b,a,0: 20),title(subplot312; step(b,a,0: 20),title(subplot313; stem(k,y),title( 单位脉冲响应’); 单位阶跃响应’); 零状态响应’); 单位脉冲响应 单位阶跃响应 —20 8 I1 6 I1 - I4 I12 IO I8 I6 I4 I2_■ ._OoLQedqu_pmA 100 零状m态响c)应 0 3.编程实现下面两个信号,并画出两个信号的卷积,看是否与理论计算值相一致。 思考: 卷积后的信号长度与区间与原来两个信号相比,有什么关系。 1.0 1.G ■4 12 0E- 0£- 04- D2- ■_LI1I ■0.500S152 t1=-2: 0.01: 2; f1=2*rectpuls(t1,2); t2=-3: 0.01: 3; f2=rectpuls(t2,4); a=conv(double(f1),double(f2)); tmin=t1 (1)+t2 (1); tmax=t1(end)+t2(end); plot(tmin: 0.01: tmax,a) EOO f: UU 实验总结 经过这次MATLAB勺实验我学会了使用函数求解零输入响应和零状态响应,对于连续函数求单位冲激响应h(t)使用impulse函数,impulse(b,a,t0)绘出由向量a和b所定义勺连续系统在0~t0时间范围内冲激响应勺时域波形。 求单位阶跃响应g(t)使用step函数,零状态响应使用lsim函数。 对于离散序列,可以用差分方程求单位冲激响应h(n)使用impz,求单位阶跃响应g(n)使用dstep函数,零状态响应使用filter函数,对于零输入响应就是齐次方程,直接根据特征根勺三种情况,即两个不同勺实数解,一个实数解,两个复数根,解出方程即可。 在画出离散函数勺零状态响应时并不能像画连续函数勺lsim直接做图,必须先使用y=filter(b,a,x)然后再用stem(t,y)作图,这里有一点区别,但是对于为什么卷积图勺纵坐标为什么会这么大,还是不太清楚,所以经过这次勺学习已经掌握了线性时不变系统勺时域方面勺卷积求解,总结一下函数勺使用方法: ⑴impulse()函数⑴impz()函数impulse(b,a)impz(b,a)impulse(b,a,t0)impz(b,a,n)impulse(b,a,t1: p: t2)impz(b,a,n1: n2)y=impulse(b,a,t1: p: t2)y=impz(b,a,n1: n2) ⑵step()函数⑵dstep()函数 dstep(b,a) dstep(b,a,t0) 3)fiIter()函数 fiIter(b,a,x) step(b,a) step(b,a,t0)step(b,a,t1: p: t2)dstep(b,a,t1: t2)y=step(b,a,t1: p: t2)y=dstep(b,a,t1: t2) (3)Isim()函数 ①系统无初态时 Isim(b,a,x,t)y=Isim(b,a,x,t)②系统有初始状态时 Isim(A,B,C,D,e,t,X0) [Y,X]=Isim(A,B,C,D,e,t,X0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 LTI 系统 时域 分析