实验二 z变换及其应用

更新时间:2023-11-22 08:22:01 阅读量: 教育文库 文档下载

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

实验三 z变换及其应用

3.1实验目的

1)加深对离散系统变换域分析——z变换的理解;

2)掌握进行z变换和z反变换的基本方法,了解部分分式法在z反变换中的应用; 3)掌握使用MATLAB语言进行z变换和z反变换的常用函数。

3.2实验涉及的MATLAB函数

1)ztrans

功能:返回无限长序列函数x(n)的z变换。 调用格式:

X=ztrans(x);求无限长序列函数x(n)的z变换X(z),返回z变换的表达式。

2)iztrans

功能:求函数X(z)的z反变换x(n)。 调用格式:

x=iztrans(X);求函数X(z)的z反变换x(n),返回z反变换的表达式。 3)syms

功能:定义多个符号对象。 调用格式:

syms a b w0;把字符a,b,w0定义为基本的符号对象。 4)residuez

功能:有理多项式的部分分式展开。 调用格式:

[r,p,c]=residuez(b,a);把b(z)/a(z)展开成部分分式。

[b,a]=residuez(r, p, c);根据部分分式的r、p、c数组,返回有理多项式。

其中:b,a为按降幂排列的多项式的分子和分母的系数数组;r为余数数组;p为极点数组;c为无穷项多项式系数数组。

3.3实验原理

1)用ztrans子函数求无限长序列的z变换

MATLAB提供了进行无限长序列的z变换的子函数ztrans。使用时须知,该函数只给出z变换的表达式,而没有给出收敛域。另外,由于这一功能还不尽完善,因而有的序列的z变换还不能求出,z逆变换也存在同样的问题。

例1 求以下各序列的z变换。

x1(n)?an,x4(n)?ejw0n,x2(n)?n,x3(n)?n(n?1),2 1x5(n)?n(n?1)syms w0 n z a x1=a^n; X1=ztrans(x1) x2=n; X2=ztrans(x2) x3=(n*(n-1))/2; X3=ztrans(x3) x4=exp(j*w0*n); X4=ztrans(x4) x5=1/(n*(n-1)); X5=ztrans(x5)

2)用iztrans子函数求无限长序列的z反变换

MATLAB还提供了进行无限长序列的z反变换的子函数iztrans。 例2:求下列函数的z反变换。

X1(z)?X3(z)?syms n z a

X1=z/(z-1); x1=iztrans(X1) X2=a*z/(a-z)^2; x2=iztrans(X2) X3=z/(z-1)^3; x3=iztrans(X3) X4=(1-z^-n)/(1-z^-1); x4=iztrans(X4) 3)用部分分式法求z反变换

zz?1z(z?1)3X2(z)?az(a?z)21?z1?z?1?n

X4(z)?部分分式法是一种常用的求解z反变换的方法。当z变换表达式是一个多项式时,可以表示为

b0?b1z?1?b2z?2?X(z)?1?a1z?1?a2z?2??bMz?M ?N?aNz将该多项式分解为真有理式与直接多项式两部分,即得到

b0?b1z?1?b2z?2?X(z)?1?a1z?1?a2z?2?当式中M

?bN?1z?N?1M?N?k ?Cz?k?N?aNzk?0情况1: X(z)仅含有单实极点,则部分分式展开式为

M?Nrk?kX(z)???Cz?k?1k?11?pkzk?0N?X(z)的z反变换为:

r1r2??1?p1z?11?p2z?1?rN?1?pNz?1M?Nk?0

?kk?Czx(n)??rk(pk)u(n)?nk?1NM?Nk?0?C?(n?k)

k情况2: X(z)含有一个r重极点。这种情况处理起来比较复杂,本实验不做要求,仅举例4供使用者参考。

z2例3:已知X(z)?2,|z|>1,试用部分分式法求z反变换,并列出N=20点的数值。

z?1.5z?0.5解:由表达式和收敛域条件可知,所求序列x(n)为一个右边序列,且为因果序列。将上式整理得:

X(z)?求z反变换的程序如下: b=[1, 0, 0]; a=[1, -1.5, 0.5]; [r, p, c]=residuez(b, a) 在MATLAB命令窗将显示: r= 2 -1 p= 1.0000 0.5000 c= []

1

1?1.5z?1?0.5z?2由此可知,这是多项式M

X(z)?21? ?1?11?z1?0.5z

可写出z反变换公式:

x(n)?2u(n)?(0.5)nu(n)

如果用图形表现x(n)的结果,可以加以下程序: N=20; n=0: N-1;

x=r(1)*p(1).^n+r(2)*p(2).^n;

stem(n, x); title('用部分分式法求反变换x(n)');

z?1例4:用部分分式法求解函数H(z)?的z反变换,写出h(n)的表示式,并用图

1?12z?1?36z?2形与impz求得的结果相比较。

解 求z反变换的程序如下: b=[0, 1, 0]; a=[1, -12, 36]; [r, p, c]=residuez(b, a) 在MATLAB命令窗将显示: r= -0.1667- 0.0000i 0.1667+0.0000i p= 6.0000+0.0000i 6.0000 - 0.0000i c= []

由此可知,这个多项式含有重极点。多项式分解后表示为:

H(z)??0.16670.1667?1?6z?1(1?6z?1)2?0.16670.16676z?z1?6z?16(1?6z?1)2?1

?根据时域位移性质,可写出z反变换公式:

h(n)??0.1667(6)nu(n)?0.1667(n?1)6n?1u(n?1) 6如果要用图形表现h(n)的结果,并与impz子函数求出的结果相比较,可以在前面已有的程序后面加以下程序段:

N=8; n=0: N-1;

h=r(1)*p(1).^n.*[n>=0]+r(2).*(n+1).*p(2).^n.*[n+1>=0]; subplot(1, 2, 1), stem(n, h);

title('用部分分式法求反变换h(n)'); h2=impz(b, a, N);

subplot(1, 2, 2), stem(n, h2); title('用impz求反变换h(n)');

例5: 用部分分式法求解下列系统函数的z反变换,并用图形与impz求得的结果相比较。

0.1321?0.3963z?2?0.3963z?4?0.1321z?6H(z)?

1?0.34319z?2?0.60439z?4?0.20407z?6解 由上式可知,该函数表示一个6阶系统。其程序如下: a=[1, 0, 0.34319, 0, 0.60439, 0, 0.20407]; b=[0.1321, 0, -0.3963, 0, 0.3963, 0, -0.1321]; [r, p, c]=residuez(b, a)

此时在MATLAB命令窗将显示: r= -0.1320-0.0001i

-0.1320+0.0001i -0.1320+0.0001i -0.1320-0.0001i 0.6537+0.0000i 0.6537-0.0000i p= -0.6221+0.6240i -0.6221-0.6240i 0.6221+0.6240i 0.6221-0.6240i 0 + 0.5818i 0 - 0.5818i c = -0.6473

由于该系统函数分子项与分母项阶数相同,符合M≥N,因此具有冲激项。可以由r、p、c的值写出z反变换的结果。

如果要求解z反变换的数值结果,并用图形表示,同时与impz求解的冲激响应结果进行比较,可以在上述程序加:

N=40; n=0:N-1;

h=r(1)*p(1).^n+r(2)*p(2).^n+r(3)*p(3).^n+r(4)*p(4).^n+… r(5)*p(5).^n+r(6)*p(6).^n+c(1).*[n==0]; subplot(1, 2, 1), stem(n, real(h), 'k'); title('用部分分式法求反变换h(n)'); h2=impz(b, a, N);

subplot(1, 2, 2), stem(n, h2, 'k'); title('用impz求反变换h(n)'); 4)从变换域求系统的响应

系统的响应既可以用时域分析的方法求解,也可以用变换域分析法求解。当已知系统函数H(z),又已知系统输入序列的z变换X(z),则系统响应序列的z变换可以由Y(z)=H(z)X(z)求出。

zz2例6: 已知一个离散系统的函数H(z)?2,输入序列X(z)?,求系统在变换

z?1z?1.5z?0.5域的响应Y(z)及时间域的响应y(n)。

解: 本例仅采用先从变换域求解Y(z),再用反变换求y(n)的方法,以巩固本实验所学习的内容。 MATLAB程序如下: syms z X=z/(z-1);

H=z^2/(z^2-1.5*z+0.5); Y=X*H y=iztrans(Y)

程序运行后,将显示以下结果: Y= z^3/(z-1)/(z^2-3/2*z+1/2) y= 2*n+2^(-n)

如果要观察时域输出序列y(n),可以在上面的程序后编写以下程序段: n=0: 20; y=2*n+2.^(-n); stem(n, y);

3.4实验内容

1)输入并运行例题程序,理解每一条程序的意义。

2)求以下各序列的z变换:

x1(n)?nanx3(n)?23)求下列函数的z反变换:

nx2(n)?sin(?0n)x4?e?ansin(n?0)

X1(z)?X3(z)?zz?azz?ej?0X2(z)?z(z?a)21?z1?z?1?3

X4(z)?4)用部分分式法求解下列系统函数的z反变换,写出x(n)的表示式,并用图形与impz求得的结果相比较,取前10个点作图。

10?20z?1X(z)?

1?8z?1?19z?2?12z?35z?2X(z)? ?1?21?z?6zX(z)?

1 ?12?1(1?0.9z)(1?0.9z)3. 5实验报告

(1) 列写出通过调试后的实验任务程序,打印或描绘实验程序产生的曲线图形。 (2) 思考题:

① MATLAB中提供的ztrans和iztrans变换方法,使用中有何问题需要注意? ② 回答预习思考题。

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

Top