上机实验8 离散系统的Z域分析 一.实验目的
1. 掌握离散时间信号的Z变换和Z逆变换的实现方法与编程思想。
2. 掌握系统频率响应函数幅频特性、相频特性和系统函数的零极点图的绘制方法。 3. 了解函数ztrans,iztrans,zplane,dimpulse,dstep和freqz的调用格式及作用。 4. 了解利用零极点图判断系统稳定性的原理。 二.实验原理
离散系统的分析方法可分为时域解法和变换域解法两大类。其中离散系统变换域解法只有一种。即Z变换域解法。Z变换域没有物理意义,它只是一种数学手段,之所以在离散系统的分析中引入Z变换的概念,就是要像在连续系统分析是引入拉氏变换一样,简化分析方法和过程,为系统的分析研究提供一条新的途径。这种方法的数学描述为Z变换及其逆变换,这种方法称为离散信号与系统的Z域分析法。 三. 实验内容: 验证性试验 1 Z变换
确定信号f1(n)=n
3U(n),f2(n)=cos(2n)U(n)的Z变换。 程序:
%确定信号的Z变换 syms n z f1=3^n;
f1_z=ztrans(f1) f2=cos(2*n); f2_z=ztrans(f2)
结果:f1_z =z/(z - 3)
f2_z =(z*(z - cos(2)))/(z^2 - 2*cos(2)*z + 1) 2 Z反变换
已知离散LTI系统的激励函数为f(k)=(-1)^kU(k),单位序列响应h(k)=(1/3*(-1)^k+2/3*3^k)U(k),采用变换域分析法确定系统的零状态响应 程序: syms k z f=(-1)^k; f_z=ztrans(f);
h=1/3*(-1)^k+2/3*3^k; h_z=ztrans(h); yf_z=f_z*h_z; yf=iztrans(yf_z)
结果:yf =(5*(-1)^n)/6 + 3^n/2 + ((-1)^n*(n - 1))/3 计算1/((1+5*z^(-1))*(1-2*z^(-1))^2),|z|>5的反变换 程序: num=[0,1];
den=poly([-5,1,1]);
[r,p,k]=residuez(num,den) 结果:r =
-0.13 + 0.0000i -0.0278 - 0.0000i 0.1667 + 0.0000i p =
-5.0000 + 0.0000i 1.0000 + 0.0000i 1.0000 - 0.0000i k = []
3采用MATLAB语言编程,绘制离散LTI系统函数的零极点图,并从零极点图判断系统的稳定性。
已知离散系统的H(z),求零近点图,并求解h(k)和H(e^jw)程序:b=[1,2,1];
>> a=[1,-0.5,-0.005,0.3]; >> subplot(3,1,1); >> zplane(b,a); >> num=[0,1,2,1];
>> den=[1,-0.5,-0.005,0.3]; >> h=impz(num,den); >> subplot(3,1,2); >> stem(h); >> %xlabel('k'); >> %ylabel('h(k)');
>> [H,w]=freqz(num,den); >> subplot(3,1,3); >> plot(w/pi,abs(H)); >> %xlabel('/omega'); >> %ylabel('abs(H)'); 结
果
:
4直线型系统函数的Z域分布试,求其零点和极点,并将其转化为二阶节形式 程序:num=[1,-0.1,-0.3,-0.3,-0.2]; den=[1,0.1,0.2,0.2,0.5];
[z,p,k]=tf2zp(num,den);m=abs(p);disp('零点');disp(z);
disp('极点');disp(p);disp('增益系数');disp(k);sos=zp2sos(z,p,k);disp('二阶节');disp(real(sos));zplane(num,den) 结果:零点
0.9615 + 0.0000i -0.5730 + 0.0000i -0.1443 + 0.5850i -0.1443 - 0.5850i 极点
0.5276 + 0.6997i 0.5276 - 0.6997i -0.5776 + 0.5635i -0.5776 - 0.5635i
增益系数 1
二阶节
1.0000 -0.3885 -0.5509 1.0000 1.1552 0.6511
1.0000 0.2885 0.3630 1.0000 -1.0552 0.7679
程序设计实验
1试分别确定下列信号的Z变换。
f1(k)= (2/5)^k, f2(k)=cos(2*k), f3(k)=k-1, f4(k)=k*(-1)^k . 程序:syms k z
f1=(2/5)^k;f1_z=ztrans(f1) f2=cos(2*k);f2_z=ztrans(f2) f3=k-1;f3_z=ztrans(f3) f4=k*(-1)^k;f4_z=ztrans(f4)
结果f1_z =z/(z - 2/5 f2_z =(z*(z - cos(2)))/(z^2 - 2*cos(2)*z + 1 f3_z =z/(z - 1)^2 - z/(z - 1) f4_z =-z/(z + 1)^2
2试分别确定下列因果信号的逆Z变换。
F1=(3*z+1)/(z+2),F2=(z^2)/(z*z+3*z,F3=1/(z^2+1),F4= (z*z+z+1)/( z*z+z-2) 程序:clear all; syms k z
F1=(3*z+1)/(z+2); f1=iztrans(F1,k)
F2=(z^2)/(z*z+3*z+2); f2=iztrans(F2,k) F3=1/(z^2+1); f3=iztrans(F3,k) F4= (z*z+z+1)/( z*z+z-2); f4=iztrans(F4,k) pretty(f1); pretty(f2); pretty(f3); pretty(f4);
结果:f1 =
1/2*charfcn[0](k)+5/2*(-2)^k f2 = -(-1)^k+2*(-2)^k f3 = 0 f4 =
-1/2*charfcn[0](k)+1+1/2*(-2)^k
k 1/2 charfcn[0](k) + 5/2 (-2) k k -(-1) + 2 (-2) 0
k - 1/2 charfcn[0](k) + 1 + 1/2 (-2)