实验四离散时间LTI系统分析实验目的学会运用MATLAB求解离散时间系统的零状态响应;学会运用MATLAB求解离散时间系统的单位冲激响应;学会运用MATLAB求解离散时间系统的卷积和。学会运用MATLAB求离散时间信号的z变换和z反变换;学会运用MATLAB分析离散时间系统的系统函数的零极点;学会运用MATLAB分析系统函数的零极点分布与其时域特性的关系;学会运用MATLAB进行离散时间系统的频率特性分析。实验原理及实例分析1离散时间系统的响应离散时间LTI系统可用线性常系数差分方程来描述,即MjjNiijnxbinya00)()((1)其中,ia(0i,1,…,N)和jb(0j,1,…,M)为实常数。MATLAB中函数filter可对式(1)的差分方程在指定时间范围内的输入序列所产生的响应进行求解。函数filter的语句格式为y=filter(b,a,x)其中,x为输入的离散序列;y为输出的离散序列;y的长度与x的长度一样;b与a分别为差分方程右端与左端的系数向量。【实例1】已知某LTI系统的差分方程为)1(2)()2(2)1(4)(3nxnxnynyny试用MATLAB命令绘出当激励信号为)()2/1()(nunxn时,该系统的零状态响应。解:MATLAB源程序为a=[3-42];b=[12];n=0:30;x=(1/2).^n;y=filter(b,a,x);stem(n,y,'fill'),gridonxlabel('n'),title('系统响应y(n)')程序运行结果如图1所示。2离散时间系统的单位冲激响应系统的单位冲激响应定义为系统在)(n激励下系统的零状态响应,用)(nh表示。MATLAB求单位冲激响应的方法是利用控制系统工具箱提供的函数impz来实现。impz函数的常用语句格式为impz(b,a,N)其中,参数N通常为正整数,代表计算单位冲激响应的样值个数。【实例2】已知某LTI系统的差分方程为)1(2)()2(2)1(4)(3nxnxnynyny利用MATLAB的impz函数绘出该系统的单位冲激响应。解:MATLAB源程序为a=[3-42];b=[12];n=0:30;impz(b,a,30),gridontitle('系统单位冲激响应h(n)')程序运行结果如图3所示。图3-1实例3-1系统的零状态响应3离散时间信号的卷积和运算由于系统的零状态响应是激励与系统的单位冲激响应的卷积,因此卷积运算在离散时间信号处理领域被广泛应用。离散时间信号的卷积定义为mmnhmxnhnxny)()()(*)()((2)可见,离散时间信号的卷积运算是求和运算,因而常称为“卷积和”。MATLAB求离散时间信号卷积和的命令为conv,其语句格式为y=conv(x,h)其中,x与h表示离散时间信号值的向量;y为卷积结果,它默认序列从n=0开始。但是如果序列是从一负值开始,即():12():12xnnxnnxhnnhnnh如果nx10或nh10就不能直接采用conv函数。其卷积结果序列为{():1122}ynnxnhnnxnh,这样就可以构成一个新的卷积函数conv_m。如下所示:function[y,ny]=conv_m(x,nx,h,nh)ny1=nx(1)+nh(1);ny2=nx(length(x))+nh(length(h));ny=[ny1:ny2];y=conv(x,h)值得注意的是用MATLAB进行卷积和运算时,无法实现无限的累加,只能计算时限信号的卷积。图3-3系统单位取样响应【实例3】已知某系统的单位冲激响应为88.0nununhn,试用MATLAB求当激励信号为)4()()(nununx时,系统的零状态响应。解:MATLAB中可通过卷积求解零状态响应,即)(*)(nhnx。由题意可知,描述)(nh向量的长度至少为8,描述)(nx向量的长度至少为4,因此为了图形完整美观,我们将)(nh向量和)(nx向量加上一些附加的零值。MATLAB源程序为nx=-1:5;%x(n)向量显示范围(添加了附加的零值)nh=-2:10;%h(n)向量显示范围(添加了附加的零值)x=uDT(nx)-uDT(nx-4);h=0.8.^nh.*(uDT(nh)-uDT(nh-8));[y,ny]=conv_m(x,nx,h,nh);subplot(311)stem(nx,x,'fill'),gridonxlabel('n'),title('x(n)')axis([-41603])subplot(312)stem(nh,h','fill'),gridonxlabel('n'),title('h(n)')axis([-41603])subplot(313)stem(ny,y,'fill'),gridonxlabel('n'),title('y(n)=x(n)*h(n)')axis([-41603])程序运行结果如图4所示。【编程练习1】1.试用MATLAB命令求解以下离散时间系统的单位冲激响应。(1))1()()2()1(4)(3nxnxnynyny(2))()2(10)1(6)(25nxnynyny2.已知某系统的单位冲激响应为10)87(nununhn,试用MATLAB求当激励信号为)5()()(nununx时,系统的零状态响应。图3-5利用卷积和法求解系统的零状态响应4z正反变换序列nx的z变换定义为nnznxnxzXZ(3)其中,符号Z表示取z变换,z是复变量。相应地,单边z变换定义为0nnznxnxzXZ(4)MATLAB符号数学工具箱提供了计算离散时间信号单边z变换的函数ztrans和z反变换函数iztrans,其语句格式分别为Z=ztrans(x)x=iztrans(z)上式中的x和Z分别为时域表达式和z域表达式的符号表示,可通过sym函数来定义。【实例4】试用ztrans函数求下列函数的z变换。(1))()cos()(nunanxn;(2))(])2(2[)(11nunxnn。解:(1)z变换MATLAB源程序为x=sym('a^n*cos(pi*n)');Z=ztrans(x);simplify(Z)%对Z进行简化运算ans=z/(z+a)(2)z变换MATLAB源程序为x=sym('2^(n-1)-(-2)^(n-1)');Z=ztrans(x);simplify(Z)ans=z^2/(z-2)/(z+2)【实例5】试用iztrans函数求下列函数的z反变换。(1)65198)(2zzzzX(2)32)2)(1()12112()(zzzzzzX解:(1)z反变换MATLAB源程序为Z=sym('(8*z-19)/(z^2-5*z+6)');x=iztrans(Z);simplify(x)ans=-19/6*charfcn[0](n)+5*3^(n-1)+3*2^(n-1)其中,charfcn[0](n)是)(n函数在MATLAB符号工具箱中的表示,反变换后的函数形式为)()2335()(619)(11nunnxnn。(2)z反变换MATLAB源程序为Z=sym('z*(2*z^2-11*z+12)/(z-1)/(z-2)^3');x=iztrans(Z);simplify(x)ans=-3+3*2^n-1/4*2^n*n-1/4*2^n*n^2其函数形式为)()241241233()(2nunnnxnnn。5系统函数的零极点分析离散时间系统的系统函数定义为系统零状态响应的z变换与激励的z变换之比,即)()()(zXzYzH(5)如果系统函数)(zH的有理函数表示式为11211121)(nnnnmmmmazazazabzbzbzbzH(6)那么,在MATLAB中系统函数的零极点就可通过函数roots得到,也可借助函数tf2zp得到。1,roots的格式语句为:p=roots(A),其中A为待求根的多项式的系数构成的行向量,返回向量p则包含该多项式所有的根位置列向量。2,tf2zp的语句格式为[Z,P,K]=tf2zp(B,A)其中,B与A分别表示)(zH的分子与分母多项式的系数向量。它的作用是将)(zH的有理分式表示式转换为零极点增益形式,即)())(()())(()(2121nmpzpzpzzzzzzzkzH(7)【实例7】已知一离散因果LTI系统的系统函数为16.032.0)(2zzzzH试用MATLAB命令求该系统的零极点。解:1,用roots函数求系统的零极点:a=[10.32];b=[110.16];r=roots(a)r=-0.3200p=roots(b)p=-0.8000-0.20002,用tf2zp函数求系统的零极点,MATLAB源程序为B=[1,0.32];A=[1,1,0.16];[R,P,K]=tf2zp(B,A)R=-0.3200P=-0.8000-0.2000K=1因此,零点为0.32z,极点为10.8p与20.2p。若要获得系统函数)(zH的零极点分布图,可直接应用zplane函数,其语句格式为zplane(B,A)其中,B与A分别表示)(zH的分子和分母多项式的系数向量。值注意的是:求系统函数零极点时,离散系统的系统函数可能有两种形式,一种是分子分母多项式按z的降幂次序排列,另一种是按1z的升幂次序排列。若是以z的降幂次序排列,则系数向量一定要由多项式的最高幂次开始,一直到常数项,缺项要用0补齐;若以1z的升幂次序排列,则分子分母多项式系数向量的维数一定要相同,不足的要用0补齐,否则零点或极点有可能被漏掉。【实例8】已知一离散因果LTI系统的系统函数为222120.3610.36()1.520.6811.520.68zzHzzzzz试用MATLAB命令绘出该系统的零极点分布图。解:用zplane函数求系统的零极点,MATLAB源程序为B=[1,0,-0.36];A=[1,-1.52,0.68];zplane(B,A),gridonlegend('零点','极点')title('零极点分布图')程序运行结果如图5所示。可见,该因果系统的极点全部在单位圆内,故系统是稳定的。6系统函数的零极点分布与其时域特性的关系与拉氏变换在连续系统中的作用类似,在离散系统中,z变换建立了时域函数)(nh与z域函数)(zH之间的对应关系。因此,z变换的函数)(zH从形式可以反映)(nh的部分内在性质。我们仍旧通过讨论)(zH的一阶极点情况,来说明系统函数的零极点分布与系统时域特性的关系。【实例9】试用MATLAB命令画出现下列系统函数的零极点分布图、以及对应的时域单位冲激响应)(nh的波形,并分析系统函数的极点对时域波形的影响。(1)8.0)(1zzzH(2)8.0)(2zzzH(3)72.02.1)(23zzzzH(4)1)(4zzzH(5)16.1)(25zzzzH(6)2.1)(6zzsH(7)36.12)(27zzzzH解:MATLAB源程序为b1=[1,0];a1=[1,-0.8];subplot(121)zplane(b1,a1)title('极点在单位圆内的正实数')subplot(122)impz(b1,a1,30);gridon;figureb2=[1,0];a2=[1,0.8];subplot(121)图4-1零极点分布图zplane(b2,a2)title('极点