实验三 z变换及离散时间LTI系统的z域分析

更新时间:2023-10-19 02:25:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验三 z变换及离散时间LTI系统的z域

分析

一. 实验目的

? ? ? ?

学会运用MATLAB求离散时间信号的z变换和z反变换; 学会运用MATLAB分析离散时间系统的系统函数的零极点;

学会运用MATLAB分析系统函数的零极点分布与其时域特性的关系; 学会运用MATLAB进行离散时间系统的频率特性分析。

二.实验原理及实例分析 1. z正反变换

序列x?n?的z变换定义为

X?z??Z?x?n???n????x?n?z??n (3-1)

其中,符号Z表示取z变换,z是复变量。相应地,单边z变换定义为

X?z??Z?x?n????x?n?z?n (3-2)

n?0?MATLAB符号数学工具箱提供了计算离散时间信号单边z变换的函数ztrans和z反变换函数iztrans,其语句格式分别为

Z=ztrans(x) x=iztrans(z)

上式中的x和Z分别为时域表达式和z域表达式的符号表示,可通过sym函数来定义。 注意:符号变量和符号表达式在使用前必须说明;

matlab提供了两个建立符号变量的函数:sym和syms,两个函数的用法不同 (1)sym函数用来建立单个符号变量,调用格式: 符号变量名=sym('符号字符串')

该函数可以建立一个符号量,符号字符串也可以是常量、变量、函数或表达式。 >>f1=sym(‘ax^2+bx+c’) %创建符号变量f1和一个符号表达式

(2)函数sym一次只能定义一个符号变量,而syms函数一次可以定义多个符号变量,调用格式为:

syms 符号变量名1 符号变量名2 … 符号变量名n

用这种格式定义符号变量时不要在变量名上加字符串分界符('),变量间用空格而不

要用逗号分隔。

>> syms a b c x

(3)MATLAB提供的对符号表达式化简的函数有: simplify(s)

【实例3-1】 试用ztrans函数求下列函数的z变换。

(1)x(n)?ancos(?n)u(n); (2)x(n)?[2n?1?(?2)n?1]u(n)。 解:(1)z变换MATLAB源程序为

>>x=sym('a^n*cos(pi*n)'); >>Z=ztrans(x); >>simplify(Z) ans = z/(a + z)

(2)z变换MATLAB源程序为

>>x=sym('2^(n-1)-(-2)^(n-1)'); >>Z=ztrans(x); >>simplify(Z) ans =

z/(2*(z - 2)) + z/(2*(z + 2))

【实例3-2】 试用iztrans函数求下列函数的z反变换。

8z?19z(2z2?11z?12)(1)X(z)?2 (2)X(z)? 3z?5z?6(z?1)(z?2)解:(1)z反变换MATLAB源程序为

>>Z=sym('(8*z-19)/(z^2-5*z+6)'); >>x=iztrans(Z); >>simplify(x) ans =

(3*2^n)/2 + (5*3^n)/3 - (19*kroneckerDelta(n, 0))/6

其中,kroneckerDelta(n, 0)是?(n)函数在MATLAB符号工具箱中的表示,反变换后的函数形式为:

x(n)??19?(n)?(5?3n?1?3?2n?1)u(n)。 6(2)z反变换MATLAB源程序为

>>Z=sym('z*(2*z^2-11*z+12)/(z-1)/(z-2)^3'); >>x=iztrans(Z); >>simplify(x)

ans =

3*2^n - (2^n*n)/4 - (2^n*n^2)/4 - 3

其函数形式为x(n)?(?3?3?2?n1n12nn2?n2)u(n)。 44如果信号的z域表示式X(z)是有理函数,进行z反变换的另一个方法是对X(z)进行部分分式展开,然后求各简单分式的z反变换。设X(z)的有理分式表示为

b0?b1z?1?b2z?2???bmz?mB(z) (3-3) X(z)???1?2?nA(z)1?a1z?a2z???anzMATLAB信号处理工具箱提供了一个对X(z)进行部分分式展开的函数residuez,其语句格式为

[R,P,K]=residuez(B,A)

其中,B,A分别表示X(z)的分子与分母多项式的系数向量;R为部分分式的系数向量;P为极点向量;K为多项式的系数。若X(z)为有理真分式,则K为零。

【实例3-3】 试用MATLAB命令对函数X(z)?展开,并求出其z反变换。

解:MATLAB源程序为

>>B=[18]; >>A=[18,3,-4,-1]; >>[R,P,K]=residuez(B,A) R= 0.3600 0.2400 0.4000 P= 0.5000 -0.3333 -0.3333 K= []

18进行部分分式

18?3z?1?4z?2?z?3从运行结果可知,p2?p3,表示系统有一个二重极点。所以,X(z)的部分分式展开为

X(z)?因此,其z反变换为

0.36?0.240.4 ??1?12?11?0.5z1?0.3333z(1?0.3333z)x(n)?[0.36?(0.5)n?0.24?(?0.3333)n?0.4(n?1)(?0.3333)n]u(n)

2. 系统函数的零极点分析

离散时间系统的系统函数定义为系统零状态响应的z变换与激励的z变换之比,即

H(z)?如果系统函数H(z)的有理函数表示式为

Y(z) (3-4) X(z)b1zm?b2zm?1???bmz?bm?1 (3-5) H(z)?nn?1a1z?a2z???anz?an?1那么,在MATLAB中系统函数的零极点就可通过函数roots得到,也可借助函数tf2zp得到,tf2zp的语句格式为

[R,P,K]=tf2zp(B,A) 其中,B与A分别表示H(z)的分子与分母多项式的系数向量。它的作用是将H(z)的有理分式表示式转换为零极点增益形式,即

H(z)?k(z?z1)(z?z2)?(z?zm) (3-6)

(z?p1)(z?p2)?(z?pn)z?0.32

z2?z?0.16【实例3-4】 已知一离散因果LTI系统的系统函数为

H(z)?试用MATLAB命令求该系统的零极点。

解:用tf2zp函数求系统的零极点,MATLAB源程序为

>>B=[1,0.32]; >>A=[1,1,0.16]; >>[R,P,K]=tf2zp(B,A) R= -0.3200 P= -0.8000 -0.2000 K= 1

因此,零点为z?0.32,极点为p1?0.8与p2?0.2。

若要获得系统函数H(z)的零极点分布图,可直接应用zplane函数,其语句格式为

zplane(B,A)

其中,B与A分别表示H(z)的分子和分母多项式的系数向量。它的作用是在Z平面上画出单位圆、零点与极点。

【实例3-5】 已知一离散因果LTI系统的系统函数为

z2?0.36H(z)?2

z?1.52z?0.68试用MATLAB命令绘出该系统的零极点分布图。

解:用zplane函数求系统的零极点,MATLAB源程序为

>>B=[1,0,-0.36]; >>A=[1,-1.52,0.68]; >>zplane(B,A),grid on >>legend('零点','极点') >>title('零极点分布图')

程序运行结果如图3-1所示。可见,该因果系统的极点全部在单位圆内,故系统是稳定的。

图3-1 零极点分布图

3 系统函数的零极点分布与其时域特性的关系

与拉氏变换在连续系统中的作用类似,在离散系统中,z变换建立了时域函数h(n)与z域函数H(z)之间的对应关系。因此,z变换的函数H(z)从形式可以反映h(n)的部分内在性质。我们仍旧通过讨论H(z)的一阶极点情况,来说明系统函数的零极点分布与系统时域特性的关系。

【实例3-6】 试用MATLAB命令画出现下列系统函数的零极点分布图、以及对应的时域单位取样响应h(n)的波形,并分析系统函数的极点对时域波形的影响。

(1)H1(z)?zzz (2)H2(z)? (3)H3(z)?2

z?0.8z?0.8z?1.2z?0.72zzz(4)H4(z)? (5)H5(z)?2 (6)H6(s)?

z?1z?1.2z?1.6z?1z(7)H7(z)?2

z?2z?1.36解:MATLAB源程序为

>>b1=[1,0]; >>a1=[1,-0.8]; >>subplot(121) >>zplane(b1,a1)

>>title('极点在单位圆内的正实数') >>subplot(122)

本文来源:https://www.bwwdw.com/article/8uxf.html

Top