一、实验目的 (1)加深对离散系统变换域分析——z变换的理解。 (2)掌握进行z变换和z反变换的基本方法,了解部分分式法在z反变换中的应用。 (3)掌握使用MATLAB语言进行z变换和z反变换的常用子函数。 二、实验涉及的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 功能:定义多个符号对象。 调用格式: symsabw0;把字符a,b,w0定义为基本的符号对象。 4.residuez 功能:有理多项式的部分分式展开。 调用格式: =residuez(b,a);把b(z)/a(z)展开成(如式(7-3))部分分式。 [b,a]=residuez(rpc);根据部分分式的r、p、c数组,返回有理多项式。 其中:b,a为按降幂排列的多项式(如式(7-1))的分子和分母的系数数组;r为余数数组;p为极点数组;c为无穷项多项式系数数组。 三、实验原理 1.用ztrans子函数求无限长序列的z变换 MATLAB为我们提供了进行无限长序列的z变换的子函数ztrans。使用时须知,该函数只给出z变换的表达式,而没有给出收敛域。另外,由于这一功能还不尽完善,因而有的序列的z变换还不能求出,z逆变换也存在同样的问题。 例7-1 求以下各序列的z变换。 解 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) 程序运行结果如下: X1=z/a/(z/a-1) X2=z/(z-1)^2 X3=-1/2*z/(z-1)^2+1/2*z*(z+1)/(z-1)^3 X4=z/exp(i*w0)/(z/exp(i*w0)-1) ???Errorusing==>sym/maple ←表示(x5)不能求出z变换 [ZK(]Error,(inconvert/hypergeom)Summandissingularatn=0intheintervalofsummation Errorin==>C:\MATLAB6p1\toolbox\symbolic\@sym\ztrans.m Online81==>F=maple(¢map¢,¢ztrans¢,f,n,z); 2.用iztrans子函数求无限长序列的z反变换 MATLAB还提供了进行无限长序列的z反变换的子函数iztrans。 例7-2 求下列函数的z反变换。 解 symsnza 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) 程序运行结果如下: x1=1 x2=n*a^n x3=-1/2*n+1/2*n^2 x4=iztrans((1-z^(-n))/(1-1/z),z,n) 3.用部分分式法求z反变换 部分分式法是一种常用的求解z反变换的方法。当z变换表达式是一个多项式时,可以表示为 (7-1)将该多项式分解为真有理式与直接多项式两部分,即得到: (7-2)当式中M1,试用部分分式法求z反变换,并列出N=20点的数值。 解 由表达式和收敛域条件可知,所求序列x(n)为一个右边序列,且为因果序列。将上式按式(7-1)的形式整理得: 求z反变换的程序如下: b=[1,0,0]; a=[1,-1.5,0.5]; [r一、实验目的 (1)加深对离散系统变换域分析——z变换的理解。 (2)掌握进行z变换和z反