实验目的
1. 理解卷积的含义,熟悉连续时间信号与离散时间信号的卷积计算方法。 2. 熟悉应用MATLAB求解连续与离散系统在任意激励下响应的求解方法 3. 熟悉连续时间系统的单位冲激响应、阶跃响应的意义及求解方法
实验原理
1. 连续时间系统的描述
对于连续的LTI系统,当系统输入为f(t),输出为y(t),则输入与输出之间满足如下的
n
m
线性常系数微分方程:'、a』⑴(t)=v bjf
i=0
(j)
(t)。MATLAB中,用两个向量
j =0
a =[an,an“..,ao],b=[bm,bm“..,bo]完全表征系统,注意两个向量对应的幕次由高到低
排列。
2. 连续时间系统的响应
当系统输入为单位冲激信号 表示。若输入为单位阶跃信号 记为g(t),如下图所示。
3(时产生的零状态响应称为系统的单位冲激响应,用 £t(时,系统产生的零状态响应则称为系统的单位阶跃响应,
h(t)
系统的单位冲激响应 h(t)包含了系统的固有特性, 的响应。因此,求解系统的冲激响应 单位冲激与单位阶跃响应
它是由系统本身的结构及参数所决定
即可求得系统在不同激励下产生
的,与系统的输入无关。我们只要知道了系统的冲激响应,
h(t)对我们进行连续系统的分析具有非常重要的意义。
并绘制其时域波形的
在MATLAB中有专门用于求解连续系统冲激响应和阶跃响应,
函数impulse()和step()。如果系统输入为f(t),冲激响应为h(t),系统的零状态响应为 y(t), 则有:
y(t)二 h(t) f(t)。
若已知系统的输入信号及初始状态,我们便可以用微分方程的经典时域求解方法,求 出系统的响应。但是对于高阶系统,手工计算这一问题的过程非常困难和繁琐。
在MATLAB中,应用lsim()函数很容易就能对上述微分方程所描述的系统的响应进 行仿真,求出系统在任意激励信号作用下的响应。 以上各函数的调用格式如下: ⑴impulse()函数
函数impulse()将绘制出由向量a和b所表示的连续系统在指定时间范围内的单位冲激响 应h(t)的时域波形图,并能求出指定时间范围内冲激响应的数值解。
lsim()函数不仅能够求出连续系统在指定
的任意时间范围内系统响应的数值解,而且还能同时绘制出系统响应的时域波形图。
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所定义的连续系统在
并且以时间间隔p均匀取样的冲激响应的数值解,但不绘出其相应波形。 ⑵step()函数
函数step()将绘制出由向量a和b所表示的连续系统的阶跃响应, 的波形图,并且求出数值解。和
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 = con v(x1, x2); tmin = t1(1) + t2(1); tmax = t1(e nd) + t2(e nd);
120
t1 ~ t2时间范围内,
在指定的时间范围内
impulse()函数一样,step()也有如下四种调用格式:
100 . -
80 ■ -
60 ■ -
40 . .
20 . .
-3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2
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函数类似,该调用格式并不绘制出系统的 零状态响
应曲线,而只是求出与向量
lsim(A,B,C,D,e,t,XO)
t定义的时间范围相一致的系统零状态响应的数值解。 绘出由系数矩阵 A,B,C,D所定义的连续时间系统在输入为
t为表示输入信号时间范围
e
②系统有初始状态时,调用 lsim()函数可求出 系统的全响应,格式如下: 和t所定义的信号时,系统输出函数的全响应的时域仿真波形。 X=[x1,x2,…..xn]'在t=0时刻的初值。
[Y,X]= lsim(A,B,C,D,e,t,X0) 不绘出全响应波形,而只是求出与向量t定义的时间范 围相一
致的系统输出向量
Y的全响应以及状态变量
X的数值解。
t的时间间隔的密集程度,t
显然,函数lsim()对系统响应进行仿真的效果取决于向量 的取样时间间隔越小则响应曲线越光滑,仿真效果也越好。 说明: (1)
就要使用系统的状态空间
描述法,即首先要根据系统给定的方式, 程。其转换原理如前面实验四所述。
(2) 显然利用lsim()函数不仅可以分析单输入单输出系统,还可以分析复杂的多输入多输 出系统。 例题1:若某连续系统的输入为
e(t),输出为r(t),系统的微分方程为:
写出描述系统的状态方程和输出方程。
假如系统原
来给定的是微分方程或系统函数,则可用相变量法或对角线变量等方法写出系统的状态方程 和输出方
当系统有初始状态时,若使用 lsim()函数求系统的全响应,
的向量,e则是输入信号e(t)对应于向量t所定义的时间点上的取样值,X0表示系统状态变 量
y''(t) 5y'(t) 6y(t)=3f'(t) 2f(t)
① 求该系统的单位冲激响应 h(t)及其单位阶跃响应 g(t)。 ② 若f (t)二e't ;(t)求出系统的零状态响应 分析: ① 求冲激响应及阶跃响应的
a=[1 5 6];b=[3 2];
subplot(2,1,1), impulse(b,a,4) subplot(2,1,2), step(b,a,4)
运行结果如右:
y(t)
MATLAB程序:
Impulse Response
3 .„,.,„„
2
1
- 0
-1
0
1 1
0.5 1
1 1.5
I
2
l 2.5
l 3
l 3.5
4
Time (sec)
Step Response
0.8 0.6 -
F
P
1
1
_ >
0.4 L f
- 0.2
- -
0
i i
I
l
n
0
0.5 1 1.5 2 Time (sec)
2.5 3
3.5
4
②求零状态响应的 MATLAB程序:
a=[1 5 6];b=[3 2]; p1=0.01; t1=0:p1:5; x仁exp(-2*t1);
%定义取样时间间隔为 0.01 %定义时间范围 %定义输入信号
Isim(b,a,x1,t1), %对取样间隔为0.01时系统响应进行仿真 hold on; %保持图形窗口以便能在同一窗口中绘制多条曲线 p2=0.5; t2=0:p2:5; x2=exp(-2*t2);
运行结果如下:
bnusr Strutstjon Resuts
%定义取样间隔为 0.5 %定义时间范围 %定义输入信号
%对取样间隔为0.5时系统响应进行仿真并解除保持
lsim(b,a,x2,t2), hold off
.0 o. Q. o 启 1.5 2
25 T™ rsw)
3 3.5 4 ^.5
o 零输入响应
描述n阶线性时不变(LTI)连续系统的微分方程为:
dn
n -1
中今比冬¥
已知t y及各阶导数的初始值
and-; an \" F 黑
dt
bm 1u
-t
y(0)1)(0),…y(n-0),求系统的零输入响应。
为 LIT系统的输入为零时,其零输入响应为微分方程的其次解(即令微分方程的等号右 当
端为零),其形式为(设特征根均为单根)
:
y(t) = Ge
pit
C2e
p2t
Cn e
pnt
其中p1,p2,…,pn是特征方程al入n+a2入-1+…+an入+an=0的根,它们可以用 root(a)语 句求得。各系数
由y及其各阶导数的初始值来确定。对此有
C1 C2
P1C1 P2C2 Cn = y。
PnCn 二 Dy。
严1 卩2飞
pnC^ D-y0
n_1n1写成矩阵形式为
1
I
1 P2 P
2
n -1
1
p
C1
C
y。
Dy
P1
n 2 0
P
n -1
n
n
_D y°
n -1
即 V?C=YO 其解为:C=V\\Y0 式中
C = Ci
- 1
C
2
■
Cn】 C=[y° Dy。
D^y。
1 … P2
Pl
n A
…
1 Pn
n
1
V =
n A
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=le ngth(a)-1;Y0=[0,10]; p=roots(a);V=rot90(va
nder(p));c=V\\YO'; dt=0.002;te=9; t=0:dt:te;y=zeros(1,le ngth(t)); for k=1: n y=y+c(k)*exp(p(k)*t);e nd plot(t,y);grid xlabel('t') ;ylabel('y'); title('零输入响应');
p> P2
」
■\"
Pn
离散时间系统
LTI离散系统中,其输入和输出的关系由差分方程描述:
n
m
、qy(k i)八 bj f (k j)
i
j zQ
(前向差分方程)
n m
^y(k -i) = v bjf (k -n • j)
i =0
j z0
(后向差分方程)
h(k)表示。
当系统的输入为单位序列 当输入为
&k)时产生的零状态响应称为系统的单位函数响应,用
y(k) =h(k) ” f (k)。与连续系统的单位冲激响应 h(t)相类似,离散系统的单位函数响应 h(k) 也包含 了系统的固有特性, 与输入序列无关。我们只要知道了系统的单位函数响应, 得系统在不同激励信号作用下产生的响应。 离散系统的分析也同样具有非常重要的意义。 MATLAB中为用户提供了专门用于求解离散系统单位函数响应, 的函数impz()。同样也提供了求离散系统响应的专用函数 程所描述的离散系统在指定时间范围内的输入序列作用时, 统初值不为零时,可以使用 并绘制其时域波形 filter(),该函数能求出由差分方 产生的响应序列的数值解。 当系 一种是直 即可求 因此,求解系统的单位函数响应 h(k)对我们进行 dlsim()函数求出离散系统的全响应,其调用方法与前面连续系 step()的调用方法 统的lsim()函数相似。另外,求解离散系统阶跃响应可以通过如下两种方法实现: 接调用专用函数 dstep(),其调用方法与求解连续系统阶跃响应的专用函数 相似;另一种方法是利用求解离散系统 信号看成是单位阶跃信号 函数的调用格式分别如下: ⑴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所定义的离散系统在 为整数)的离散时间范围内单位函数响应的数值解,但不绘出波形。 ⑵filter()函数 filter(b,a,x) 其中a和b与前面相同,x是包含输入序列非零样值点的的行向量。 此命令将求 出系统在与 x的取样时间点相同的输出序列样值。 n1 ~ n2 (n 1、n2必须 例题:已知描述离散系统的差分方程为: y(k) -0.25y(k -1) 0.5y(k-2) = f (k) f(k-1),且已知系统输入序列为 f(k)=(2)k ;(k), ① 求出系统的单位函数响应 h(k)在-3 ~10离散时间范围内响应波形。 ② 求出系统零状态响应在 0 ~15区间上的样值;并画出输入序列的时域波形以及系统零状 态响应的波形 分析:①求系统的单位函数响应的 a=[1,-0.25,0.5]; MATLAB程序: b=[1,1,0]; impz(b,a,-3:10), title('单位响应') 形 运行结果如图a。 ②求零状态响应的 MATLAB程序: a=[1,-0.25,0.5];b=[1,1,0] k=0:15; x=(1/2).Ak; y=filter(b,a,x) title('输入序列') subplot(2,1,2),stem(k,y) title('输出序列') %定义输入序列取值范围 %定义输入序列表达式 %求解零状态响应样值 %绘出单位函数响应在-3 ~10区间上的波 subplot(2,1,1),stem(k,x) %绘制输入序列的波形 %绘制零状态响应的波形 运行结果如下: y = Colu mns 1 through 10 1.0000 .0086 Colu mns 11 through 16 0.0515 0.0187 -0.0204 -0.0141 0.00690.0088 1.7500 0.6875 -0.3281 -0.23830.1982 0.2156 -0.0218 -0.1015 -0 % 「r — 图a.①运行结果 图b.②运行结果 实验内容 1. 已知描述系统的微分方程和激励信号 e(t)分别如下, 用 MATLAB绘出系统单位冲激响 应、单位阶跃响应以及系统零状态响应的波形 4。 y''(t) 4y'(t) 4y(t) = f'(t) 3f(t) ; f(t)=e「(t) a=[1 4 4]; b=[1 3]; 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 0 12 3 4 Time (sec) 零状态响应 1 ---------------------------------------------------- 0.5 0 0 ---------- 11 -------- ' --------- 2 '3 --------- ' --------- 4 5 Time (sec) 单位阶跃响应0.8 0.6 0.4 0.2 0 0 12 Time (sec) 3 2. 列差分方程所描述的离散系统,在 冲响应、阶跃响应和系统零状态响应的数值解,并绘出其波 请用MATLAB分别求出下0~20时间范围内的单位脉 (1) y(k) 2y(k—1) y(k—2) = f(k) ; f(k)=4 ;(k) 单位冲激响应 y=1 -1 3 -4 5 -6 7 -8 9 -10 11 -12 13 -14 15 -16 17 -18 19 -20 21 单位阶跃响应 y =1.000 0 -0.1353 -0.0996 -0.09 -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 = Columns 1 through 8 0.1250 0 Columns 9 through 16 0.1250 0 Colu mns 17 through 21 0.1250 0 a=[1,2,1]; b=[1,0,0]; k=0:20;x=0.25.*heaviside(k); y=filter(b,a,x) subplot 311 ; impz(b,a,0:20),title( subplot 312 ; 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 单位脉冲响应 单位阶跃响应 ⑵一带通滤波器可由下列差分方程描述: f(k)为系统输入, a=[1,0,0.81];b=[1,0,-1]; k=0:10; x=10+10.*cos(2.*k)+10.*cos(4.*k); y(k) 0.81y(k -2)二f(k) - f(k -2),其中 y(k)为系统输出。请求出当激励为 f(k)二[10 10cos(kn/2) 10cos(kn) 1 ;(k)(选取适当的n值)时滤波器的稳态输出。 y=filter(b,a,x); subplot 311 ; impz(b,a,0:20), ti tle( subplot 312 ; step(b,a,0:20),title( subplot 313 ; stem(k,y),title( 单位脉冲响应’); 单位阶跃响应’); 零状态响应’); 单位脉冲响应 单位阶跃响应 -. _ O o LQ 2 I _■I I I I 8 I O 12 I 4 6 4 I 1 6 1 I 8 —20 零状m态响c) 100 应 0 -100 0 1 2 3 4 5 6 7 8 9 10 3. 编程实现下面两个信号,并画出两个信号的卷积,看是否与理论计算值相一致。思考: 卷积后的信号长度与区间与原来两个信号相比,有什么关系。 1.0 1.G ■ 4 12 0E - 0£ - 04 - D2 - ■ _ ■0.5 0 L I 1 0 S 15 2 I t1=-2:0.01:2; f1=2*rectpuls(t1,2); t2=-3:0.01:3; f2=rectpuls(t2,4); a=co nv(double(f1),double(f2)); tmi n=t1(1)+t2(1); tmax=t1(e nd)+t2(e nd); plot(tmi n: 0.01:tmax,a) EO O 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( ) 函数 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) 3) fiIter() 函数 fiIter ( b,a,x) dstep( b,a) dstep(b,a,t0) 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- nryq.cn 版权所有 赣ICP备2024042798号-6
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务