LTI系统的时域分析.docx
- 文档编号:27464277
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:19
- 大小:161.88KB
LTI系统的时域分析.docx
《LTI系统的时域分析.docx》由会员分享,可在线阅读,更多相关《LTI系统的时域分析.docx(19页珍藏版)》请在冰豆网上搜索。
LTI系统的时域分析
实验二 LTI系统的时域分析
一、 实验目的
1.理解卷积的含义,熟悉连续时间信号与离散时间信号的卷积计算方法。
2.熟悉应用MATLAB求解连续与离散系统在任意激励下响应的求解方法
3.熟悉连续时间系统的单位冲激响应、阶跃响应的意义及求解方法
二、 实验原理
1.连续时间系统的描述
对于连续的LTI系统,当系统输入为f(t),输出为y(t),则输入与输出之间满足如下的线性常系数微分方程:
。
MATLAB中,用两个向量
完全表征系统,注意两个向量对应的幂次由高到低排列。
2.连续时间系统的响应
当系统输入为单位冲激信号δ(t)时产生的零状态响应称为系统的单位冲激响应,用h(t)表示。
若输入为单位阶跃信号ε(t)时,系统产生的零状态响应则称为系统的单位阶跃响应,记为g(t),如下图所示。
系统的单位冲激响应h(t)包含了系统的固有特性,它是由系统本身的结构及参数所决定的,与系统的输入无关。
我们只要知道了系统的冲激响应,即可求得系统在不同激励下产生的响应。
因此,求解系统的冲激响应h(t)对我们进行连续系统的分析具有非常重要的意义。
单位冲激与单位阶跃响应
在MATLAB中有专门用于求解连续系统冲激响应和阶跃响应,并绘制其时域波形的函数impulse()和step()。
如果系统输入为f(t),冲激响应为h(t),系统的零状态响应为y(t),则有:
。
若已知系统的输入信号及初始状态,我们便可以用微分方程的经典时域求解方法,求出系统的响应。
但是对于高阶系统,手工计算这一问题的过程非常困难和繁琐。
在MATLAB中,应用lsim()函数很容易就能对上述微分方程所描述的系统的响应进行仿真,求出系统在任意激励信号作用下的响应。
lsim()函数不仅能够求出连续系统在指定的任意时间范围内系统响应的数值解,而且还能同时绘制出系统响应的时域波形图。
以上各函数的调用格式如下:
⑴impulse()函数
函数impulse()将绘制出由向量a和b所表示的连续系统在指定时间范围内的单位冲激响应h(t)的时域波形图,并能求出指定时间范围内冲激响应的数值解。
impulse(b,a) 以默认方式绘出由向量a和b所定义的连续系统的冲激响应的时域波形。
impulse(b,a,t0) 绘出由向量a和b所定义的连续系统在0~t0时间范围内冲激响应的时域波形。
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);
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,X0) 绘出由系数矩阵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),系统的微分方程为:
①求该系统的单位冲激响应h(t)及其单位阶跃响应g(t)。
②若
求出系统的零状态响应y(t)
分析:
①求冲激响应及阶跃响应的MATLAB程序:
a=[1 5 6];b=[3 2];
subplot(2,1,1),impulse(b,a,4)
subplot(2,1,2),step(b,a,4)
运行结果如右:
②求零状态响应的MATLAB程序:
a=[1 5 6];b=[3 2];
p1=0.01; %定义取样时间间隔为0.01
t1=0:
p1:
5; %定义时间范围
x1=exp(-2*t1); %定义输入信号
lsim(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时系统响应进行仿真并解除保持
运行结果如下:
零输入响应
描述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及其各阶导数的初始值来确定。
对此有
写成矩阵形式为:
即V•C=Y0
其解为:
C=V\Y0
式中
V为范德蒙矩阵,在MATLAB的特殊矩阵库中有vander。
以下面式子为例:
y″(t)+3y′(t)+6y(t)=6f′(t)-8f′(t)
初始条件为y(0_)=0,y′(0_)=10;
MATLAB程序:
a=[1,3,6];
n=length(a)-1;Y0=[0,10];
p=roots(a);V=rot90(vander(p));c=V\Y0';
dt=0.002;te=9;
t=0:
dt:
te;y=zeros(1,length(t));
fork=1:
ny=y+c(k)*exp(p(k)*t);end
plot(t,y);grid
xlabel('t');ylabel('y');
title('零输入响应');
离散时间系统
LTI离散系统中,其输入和输出的关系由差分方程描述:
(前向差分方程)
(后向差分方程)
当系统的输入为单位序列δ(k)时产生的零状态响应称为系统的单位函数响应,用h(k)表示。
当输入为ε(k)时产生的零状态响应称为系统的单位阶跃应,记为:
g(k),如下图所示。
如果系统输入为e(k),冲激响应为h(k),系统的零状态响应为y(k),则有:
。
与连续系统的单位冲激响应h(t)相类似,离散系统的单位函数响应h(k)也包含了系统的固有特性,与输入序列无关。
我们只要知道了系统的单位函数响应,即可求得系统在不同激励信号作用下产生的响应。
因此,求解系统的单位函数响应h(k)对我们进行离散系统的分析也同样具有非常重要的意义。
MATLAB中为用户提供了专门用于求解离散系统单位函数响应,并绘制其时域波形的函数impz()。
同样也提供了求离散系统响应的专用函数filter(),该函数能求出由差分方程所描述的离散系统在指定时间范围内的输入序列作用时,产生的响应序列的数值解。
当系统初值不为零时,可以使用dlsim()函数求出离散系统的全响应,其调用方法与前面连续系统的lsim()函数相似。
另外,求解离散系统阶跃响应可以通过如下两种方法实现:
一种是直接调用专用函数dstep(),其调用方法与求解连续系统阶跃响应的专用函数step()的调用方法相似;另一种方法是利用求解离散系统零状态响应的专用函数filter(),只要将其中的激励信号看成是单位阶跃信号ε(k)即可。
函数的调用格式分别如下:
⑴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的取样时间点相同的输出序列样值。
例题:
已知描述离散系统的差分方程为:
,且已知系统输入序列为
,
①求出系统的单位函数响应h(k)在-3~10离散时间范围内响应波形。
②求出系统零状态响应在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).^k; %定义输入序列表达式
y=filter(b,a,x) %求解零状态响应样值
subplot(2,1,1),stem(k,x) %绘制输入序列的波形
title('输入序列')
subplot(2,1,2),stem(k,y)%绘制零状态响应的波形
title('输出序列')
运行结果如下:
y=
Columns1through10
1.0000 1.7500 0.6875 -0.3281 -0.23830.1982 0.2156 -0.0218 -0.1015 -0.0086
Columns11through16
0.0515 0.0187 -0.0204 -0.0141 0.00690.0088
图a.①运行结果图b.②运行结果
三、 实验内容
1.已知描述系统的微分方程和激励信号e(t)分别如下,用MATLAB绘出系统单位冲激响应、单位阶跃响应以及系统零状态响应的波形4。
;
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('零状态响应');
2.请用MATLAB分别求出下列差分方程所描述的离散系统,在0~20时间范围内的单位脉冲响应、阶跃响应和系统零状态响应的数值解,并绘出其波
(1)
;
单位冲激响应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.125000.125000.125000.12500
Columns9through16
0.125000.125000.125000.12500
Columns17through21
0.125000.125000.1250
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('零状态响应');
(2)一带通滤波器可由下列差分方程描述:
, 其中
为系统输入,
为系统输出。
请求出当激励为
(选取适当的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('零状态响应');
3.编程实现下面两个信号,并画出两个信号的卷积,看是否与理论计算值相一致。
思考:
卷积后的信号长度与区间与原来两个信号相比,有什么关系。
t=-2:
0.01:
2;
t1=-1;
u1=stepfun(t,t1);
t2=1;
u2=stepfun(t,t2);
y1=2*(u1-u2);
subplot311;
plot(t,y1),title('y1=2*(u1-u2)');
axis([-2,2,0,3]);
t=-3:
0.01:
3;
t1=-2;
u1=stepfun(t,t1);
t2=2;
u2=stepfun(t,t2);
y2=u1-u2;
subplot312;
plot(t,y2),title('y1=u1-u2');
axis([-3,3,0,2]);
t1=-2:
0.1:
2;t2=-3:
0.1:
3;
s=conv(y1,y2);
tmin=t1
(1)+t2
(1);
tmax=t1(end)+t2(end);
subplot313;
plot(tmin:
0.01:
tmax,s),title('y=y1*y2');
实验总结
本次实验的目的是熟悉卷积的计算方法,学会用MATLAB计算卷积和连续与离散系统的响应。
通过这次实验,我学会了如何通过编写函数求解系统的单位脉冲响应丶单位阶跃响应丶零状态响应,并且能够对过程中出现的问题进行处理。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LTI 系统 时域 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)