文章目录
一、实验目的
1.通过本实验的练习,了解离散时间信号时域运算的基本实现方法、以及离散时间序列卷积和、离散系统单位序列响应的Matlab实现方法。
2.通过该实验,掌握离散时间信号Z变换和逆Z变换的实现方法及编程思想。
3.掌握系统频率响应函数幅频和相频特性、系统函数的零极点图的绘制方法;
4.了解函数fliplr、conv()、impz( )、ztrans()、iztrans()的调用格式及作用。
5.了解差分方程迭代解法的Matlab实现方法;
6.了解利用零极点图判断系统稳定性的原理。
二、实验内容与原理
第一部分:离散时间信号的时域基本运算
A、实验内容:
1.验证性实验
1)、采用fliplr函数编程,实现对离散序列信号的反折运算;
2)、利用向量的平移运算,实现对离散信号的平移运算;
3)、实现对离散序列信号的平移、反折运算的综合。
2.程序设计实验。
B、实验原理
函数fliplr()的调用格式
第二部分: 离散LTI系统的时域分析
A、实验内容:
1.验证性实验
1)、采用函数conv()编程,实现离散时间序列的卷积和运算(或系统的零状态响应);
2)、采用差分方程的迭代解法,求离散时间系统的全响应;
3)、采用函数impz( )编程,求离散时间系统的单位序列响应;
2.程序设计实验
B、实验原理
1)、离散序列卷积和序列号的确定
2)、函数impz( )的调用格式
第三部分:离散LTI系统Z域分析
A、实验内容:
1.验证性实验
1)、调用相关函数编程,实现离散信号的Z变换;
2)、调用相关函数编程,实现信号的逆Z变换,以及采用变换域分析法确定系统的零状态响应;
3)、调用相关函数编程,绘制频率响应函数的幅频和相频特性曲线;
4)、采用Matlab语言编程,绘制离散LTI系统系统函数的零极点图,并从零极点图判断系统的稳定性。
2.程序设计实验。
B、实验原理
1).函数ztrans() 和函数iztrans()的调用格式
2).函数freqz()的调用格式
三、实验器材
计算机,Matlab软件
四、实验步骤
第一、二、三部分均分为验证性实验和程序设计实验,其中验证性实验在上面的实验内容中有所介绍;程序设计实验及其结果将在下面有所分析,因此实验步骤不过多赘述。
五、实验数据及结果分析
第一部分:离散时间信号的时域基本运算
已知离散序列f(k)波形如图4-5所示,绘出满足下列要求的序列波形。要求写出全部实验程序,并绘制信号波形。
图4-5 f(k)的波形
(
1
)
f
(
k
−
2
)
(1)f(k-2)
(1)f(k−2)
(
2
)
f
(
−
k
)
(2)f(-k)
(2)f(−k)
(
3
)
f
(
−
k
+
2
)
(3)f(-k+2)
(3)f(−k+2)
(
4
)
f
(
k
−
1
)
ε
(
k
)
(4)f(k-1)ε(k)
(4)f(k−1)ε(k)
(
5
)
f
(
k
+
1
)
(5) f(k+1)
(5)f(k+1)
(
6
)
f
(
k
+
2
)
ε
(
k
)
(6)f(k+2)ε(k)
(6)f(k+2)ε(k)
(1),(2),(3)的程序及波形如下
>> k=-3:4;
f=[0 1 2 3 3 3 3 0];
subplot(2,2,1)
stem(k,f,'filled'),title('f(k)'),axis([-4,4,-1,4])
subplot(2,2,2)
lsanpw(f,k,2);title('f(k-2)')
subplot(2,2,3)
[f1,k]=lsanfz(f,k);title('f(-k)')
subplot(2,2,4)
lsanpw(f1,k,2);title('f(-k+2)')
(4)的程序及波形如下:
>> k=-3:4;
f=[0 1 2 3 3 3 3 0];
subplot(1,3,1)
stem(k,f,'filled'),title('f(k)'),axis([-4,4,-1,4])
subplot(1,3,2)
[f1,k]=lsanpw(f,k,1);title('f(k-1)'),axis([-3,5,-1,4])
subplot(1,3,3)
m=0;
n=length(k);
for i=1:n
if(k(i)<0)
m=m+1;
end
end;
for j=1:m;
f1(j)=0;
end;
stem(k,f1,'filled'),title('f(k-1)ε(k)'),axis([-3,5,-1,4])
(5)的程序及波形如下
>> k=-3:4;
f=[0 1 2 3 3 3 3 0];
subplot(1,2,1)
stem(k,f,'filled'),title('f(k)'),axis([-4,4,-1,4])
subplot(1,2,2)
lsanpw(f,k,-1);title('f(k+1)')
(6)的程序及波形如下
>> k=-3:4;
f=[0 1 2 3 3 3 3 0];
subplot(1,3,1)
stem(k,f,'filled'),title('f(k)'),axis([-4,4,-1,4])
subplot(1,3,2)
[f1,k]=lsanpw(f,k,-2);title('f(k+2)'),axis([-6,2,-1,4])1
subplot(1,3,3)
m=0;
n=length(k);
for i=1:n
if(k(i)<0)
m=m+1;
end
end;11
for j=1:m;
f1(j)=0;
end;
stem(k,f1,'filled'),title('f(k+2)ε(k)'),axis([-6,2,-1,4])
第二部分: 离散LTI系统的时域分析
要求写出下列各实验内容的完整程序。
1.已知离散LTI系统,激励f(k)=3kε(k),单位序列响应h(k)=2^k ε(k),画出系统的零状态响应y_f (k)在有限区间的波形。(有限区间自行设定)
>> k=0:5;
f1=3*k;
f2=2.^(k);
[f,k]= lsjuanji (f1,f2,k,k)
2.已知离散序列如下,试画出两序列的卷积和波形。
>> k1=-1:4;
k2=1:5;
f1=2*k1;
f2=2.^(k2);
[f,k]= lsjuanji (f1,f2,k1,k2)
3.描述LTI离散系统的差分方程如下,请绘出该系统在0~50时间范围内单位序列响应h(k)的波形,并求出数值解。
2
y
(
k
)
−
2
y
(
k
−
1
)
+
y
(
k
−
2
)
=
f
(
k
)
+
3
f
(
k
−
1
)
+
2
f
(
k
−
2
)
2y(k)-2y(k-1)+y(k-2)=f(k)+3f(k-1)+2f(k-2)
2y(k)−2y(k−1)+y(k−2)=f(k)+3f(k−1)+2f(k−2)
>> a=[2,-2,1];
b=[1,3,2];
impz(b,a,0:50)
y=impz(b,a,0:50)
y =
0.5000
2.0000
2.7500
1.7500
0.3750
-0.5000
-0.6875
-0.4375
-0.0938
0.1250
0.1719
0.1094
0.0234
-0.0313
-0.0430
-0.0273
-0.0059
0.0078
0.0107
0.0068
0.0015
-0.0020
-0.0027
-0.0017
-0.0004
0.0005
0.0007
0.0004
0.0001
-0.0001
-0.0002
-0.0001
-0.0000
0.0000
0.0000
0.0000
0.0000
-0.0000
-0.0000
-0.0000
-0.0000
0.0000
0.0000
0.0000
0.0000
-0.0000
-0.0000
-0.0000
-0.0000
0.0000
0.0000
第三部分:离散LTI系统Z域分析
1.试分别绘制下列系统的零极点图,并判断系统的稳定性。
(
1
)
H
(
z
)
=
3
z
3
−
5
z
2
+
10
z
z
3
−
3
z
2
+
7
z
−
5
(
2
)
H
(
z
)
=
4
z
3
z
3
+
0.2
z
2
+
0.3
z
+
0.4
(
3
)
H
(
z
)
=
1
+
z
−
1
4
+
2
z
−
1
+
z
−
2
(
4
)
H
(
z
)
=
1
−
0.5
z
−
1
8
+
6
z
−
1
+
z
−
2
(1)H(z)=\frac{3z^3-5z^2+10z}{z^3-3z^2+7z-5}(2)H(z)=\frac{4z^3}{z^3+0.2z^2+0.3z+0.4}(3)H(z)=\frac{1+z^{-1}}{4+2z^{-1}+z^{-2} }(4)H(z)=\frac{1-0.5z^{-1}}{8+6z^{-1}+z^{-2}}
(1)H(z)=z3−3z2+7z−53z3−5z2+10z(2)H(z)=z3+0.2z2+0.3z+0.44z3(3)H(z)=4+2z−1+z−21+z−1(4)H(z)=8+6z−1+z−21−0.5z−1
(1)
>> A=[1,-3,7,-5];
B=[3,-5,10,0];
lingjdt(A,B);
p=roots(A);
q=roots(B);
(2)
>> A=[1,0.2,0.3,0.4];
B=[4,0,0,0];
lingjdt(A,B);
p=roots(A);
q=roots(B);
(3)
>> A=[4,2,1];
B=[1,1,0];
lingjdt(A,B);
p=roots(A);
q=roots(B);
(4)
>> A=[8,6,1];
B=[1,-0.5,0];
lingjdt(A,B);
p=roots(A);
q=roots(B);
2.试分别确定下列信号的Z变换。
(
1
)
f
(
k
)
=
(
2
/
5
)
k
ε
(
k
)
(1)f(k)=(2/5)^k ε(k)
(1)f(k)=(2/5)kε(k)
(
2
)
f
(
k
)
=
c
o
s
(
2
k
)
ε
(
k
)
(2)f(k)=cos( 2k)ε(k)
(2)f(k)=cos(2k)ε(k)
(
3
)
f
(
k
)
=
(
k
−
1
)
ε
(
k
)
(3)f(k)=(k-1)ε(k)
(3)f(k)=(k−1)ε(k)
(
4
)
f
(
k
)
=
(
−
1
)
k
k
ε
(
k
)
(4)f(k)=(-1)^k kε(k)
(4)f(k)=(−1)kkε(k)
(1)>> syms k f;
f=0.4^k;
F=ztrans(f)
F =
z/(z - 2/5)
(2)>> syms k f;
f=cos(2*k);
F=ztrans(f)
F =
(z*(z - cos(2)))/(z^2 - 2*cos(2)*z + 1)
(3)>> syms k f;
f=k-1;
F=ztrans(f)
F =
z/(z - 1)^2 - z/(z - 1)
(4)>> syms k f;
f=(-1)^(k)*k;
F=ztrans(f)
F =
-z/(z + 1)^2
3.已知某LTI离散系统在输入激励 f ( k ) = ( 1 / 2 ) k ε ( k ) f(k)=(1/2)^k ε(k) f(k)=(1/2)kε(k)时的零状态响应为 y f ( k ) = [ 3 ( 1 / 2 ) k + 2 ( 1 / 3 ) k ] ε ( k ) y_f (k)=[3(1/2)^k+2(1/3)^k ]ε(k) yf(k)=[3(1/2)k+2(1/3)k]ε(k),通过程序确定该系统的系统函数H(z)以及该系统的单位序列响应h(k)。
>> syms k z;
f=(0.5)^k;
y=3*(1/2)^k+2*(1/3)^k;
Fz=ztrans(f);
Yz=ztrans(y);
Hz=Yz/Fz
hk=iztrans(Hz,z,k)
Hz =
(((3*z)/(z - 1/2) + (2*z)/(z - 1/3))*(z - 1/2))/z
hk =
6*kroneckerDelta(k, 0) - (1/3)^k
4.分别确定下列因果信号的逆Z变换。
(
1
)
F
(
z
)
=
3
z
+
1
z
+
2
(
2
)
F
(
z
)
=
z
2
z
2
+
3
z
+
2
(
3
)
F
(
z
)
=
1
z
2
+
1
(
4
)
F
(
z
)
=
z
2
+
z
+
1
z
2
+
z
−
2
(1)F(z)=\frac{3z+1}{z+2}(2)F(z)=\frac{z^2}{z^2+3z+2}(3)F(z)=\frac{1}{z^2+1} (4)F(z)=\frac{z^2+z+1}{z^2+z-2}
(1)F(z)=z+23z+1(2)F(z)=z2+3z+2z2(3)F(z)=z2+11(4)F(z)=z2+z−2z2+z+1
(1)>> syms z;
Fz=(3*z+1)/(z+2);
fk=iztrans(Fz,z,k)
fk =
(5*(-2)^k)/2 + kroneckerDelta(k, 0)/2
(2)>> syms z;
Fz=(z*z)/(z*z+3*z+2);
fk=iztrans(Fz,z,k)
fk =
2*(-2)^k - (-1)^k
(3)>> syms z;
Fz=1/(z*z+1);
fk=iztrans(Fz,z,k)
fk =
((-1i)^(k - 1)*1i)/2 - (1i^(k - 1)*1i)/2 + kroneckerDelta(k, 0)
(4)>> syms z;
Fz=(z*z+z+1)/(z*z+z-2);
fk=iztrans(Fz,z,k)
fk =
(-2)^k/2 - kroneckerDelta(k, 0)/2 + 1
六、实验结论
第一部分:离散时间信号的时域基本运算
本部分实验中离散时间信号的时域基本运算包括反折,平移,同时离散序列的时域运算和变换不能用符号运算来实现,而必须用向量的表示方法,因此参加运算的两序列向量必须有相同的维数。其中:(1)向量的反折用函数fliplr来实现;(2)离散序列的平移可认为是将离散序列的时间序号向量平移,而序列样值不变。
第二部分: 离散LTI系统的时域分析
本部分实验中对离散LTI系统的时域分析主要为卷积和以及单位序列响应。其中:(1)离散时间序列卷积和利用通用函数M文件lsjuanj来实现(lsjuanj是指导书上自带的一个求卷积和的函数),同时要注意lsjuanj只能求有限积分区间的卷积和;(2)单位序列响应的求解可以用函数impz来实现。
第三部分:离散LTI系统Z域分析
本部分实验中对离散LTI系统Z域的分析主要为Z变换,逆Z变换,零极点图。其中(1)用函数ztrans()实现信号f(k)的Z变换,用函数iztrans()实现信号F(z)的逆Z变换;(2)绘制零极点图利用指导书上自带的函数M文件lingjdt来实现;(3)求解单位序列响应h(k)时,可利用零状态响应
y
z
s
(
k
)
=
f
(
k
)
∗
h
(
k
)
y_zs (k)=f(k)*h(k)
yzs(k)=f(k)∗h(k)的Z变换为
Y
z
s
(
k
)
=
F
(
z
)
H
(
z
)
Y_zs (k)=F(z)H(z)
Yzs(k)=F(z)H(z),先从Z域求解H(z),再求其逆变换。
七、其他(主要是心得体会)
我认为本次实验相比于前三次实验而言,比较简单,主要是因为和前面的实验也有一些类似之处,不同的只是使用的函数的不同,例如:第三次实验中画H(s)的零极点分布图时,是利用指导书中自带的函数M文件(lxljdt);而本次实验中画H(z) 的零极点分布图时,利用指导书中的是自带的函数M文件(lingjdt),不同的是函数的的定义,但是引用的方法基本一致,都是先在Matlab中先建立相应的函数,然后才能进行引用。但是我在实验时也遇到了一些问题:
1.我在绘制 f(k-1)ε(k)的波形时,就遇到了麻烦。在我编写程序时,开始我看了实验指导书上给的例题,觉得有些繁琐,认为f(k-1)ε(k)可以直接用f(k-1)*heaviside(k)绘制,但是绘制的图形和实际的图形在k=0时减小了一半。后来我多次实验,发现绘制heaviside(k)的波形时(如下图所示),k=0时对应的是0.5,而不是1,所以会导致上述的变化,因此只能用指导书上的程序进行实验。
2.开始的时候我不会求解第二部分实验的程序设计实验第三题中的一部分。不知道如何用Matlab求解该系统在0-50时间范围内单位序列响应h(k)的数值解。后来我仔细翻阅了指导书后,发现了函数impz()的不同调用格式,其中y=impz(b,a,n1:n2),该调用格式并不绘出系统单位序列响应的时域波形,而是求出向量a,b定义的离散系统在n1~n2(n1,n2必须为整数,且n1<n2)离散时间范围内的单位序列响应的数值解。
3. 用Matlab绘制离散系统零极点图时,若H(z)以
Z
−
1
Z^{-1}
Z−1的升幂排列,则系数向量维数一定要相同,由常数项开始一直到
Z
−
1
Z^{-1}
Z−1的最高次幂,缺省项用零补齐。