实验6 数字滤波器的网络结构一、实验目的:1、加深对数字滤波器分类与结构的了解。
2、明确数字滤波器的基本结构及其相互间的转换方法。
3、掌握用MA TLAB 语言进行数字滤波器结构间相互转换的子函数及程序编写方法。
二、实验原理:1、数字滤波器的分类离散LSI 系统对信号的响应过程实际上就是对信号进行滤波的过程。
因此,离散LSI 系统又称为数字滤波器。
数字滤波器从滤波功能上可以分为低通、高通、带通、带阻以及全通滤波器;根据单位脉冲响应的特性,又可以分为有限长单位脉冲响应滤波器(FIR )和无限长单位脉冲响应滤波器(IIR )。
一个离散LSI 系统可以用系统函数来表示:M-m-1-2-m mm=0012m N -1-2-k-k12k k k=1bz b +b z +b z ++b z Y(z)b(z)H(z)====X(z)a(z)1+a z +a z ++a z1+a z ∑∑ 也可以用差分方程来表示:N Mk m k=1m=0y(n)+a y(n-k)=b x(n-m)∑∑以上两个公式中,当a k 至少有一个不为0时,则在有限Z 平面上存在极点,表达的是以一个IIR 数字滤波器;当a k 全都为0时,系统不存在极点,表达的是一个FIR 数字滤波器。
FIR 数字滤波器可以看成是IIR 数字滤波器的a k 全都为0时的一个特例。
IIR 数字滤波器的基本结构分为直接Ⅰ型、直接Ⅱ型、直接Ⅲ型、级联型和并联型。
FIR 数字滤波器的基本结构分为横截型(又称直接型或卷积型)、级联型、线性相位型及频率采样型等。
本实验对线性相位型及频率采样型不做讨论,见实验10、12。
另外,滤波器的一种新型结构——格型结构也逐步投入应用,有全零点FIR 系统格型结构、全极点IIR 系统格型结构以及全零极点IIR 系统格型结构。
2、IIR 数字滤波器的基本结构与实现 (1)直接型与级联型、并联型的转换 例6-1 已知一个系统的传递函数为-1-2-3-1-2-38-4z +11z -2z H(z)=1-1.25z +0.75z -0.125z将其从直接型(其信号流图如图6-1所示)转换为级联型和并联型。
X(n)y(n)图6-1分析:从直接型转换为级联型,就是将系统的传递函数(tf )模型转换为二次分式(sos )模型;从直接型转换为并联型,就是将系统函数的传递函数(tf )模型转换为极点留数(rpk )模型。
程序清单如下: b=[8,-4,11,-2];a=[1,-1.25,0.75,-0.125]; [sos,g]=tf2sos(b,a) [r,p,k]=residuez(b,a) 运行结果如下: sos =1.0000 -0.1900 0 1.0000 -0.2500 0 1.0000 -0.3100 1.3161 1.0000 -1.0000 0.5000 g = 8 r =-8.0000 -12.0000i -8.0000 +12.0000i 8.0000 p =0.5000 + 0.5000i 0.5000 - 0.5000i 0.2500 k =16由sos 和g 的数据,可以列写出级联型的表达式:-1-1-2-1-1-21-0.19z 1-0.31z +1.3161z H(z)=81-0.25z 1-z +0.5z信号流图如图6-2所示:X(n)y(n)图6-2由r 、p 、k 的数据,可以列写出并联型的表达式:-1-1-1-8-12i -8+12i 8H(z)=+++161-(0.5+0.5i)z 1-(0.5-0.5i)z 1-0.25z上式中出现了复系数,可采用二阶分割将共轭极点组成分母上的实系数二阶环节。
这里使用自定义函数dir2par 可以实现滤波器结构从直接型向并联型的转换,且用实系数二阶环节表示。
在使用该函数时,调用了另一个自定义函数cplxcomp 以进行复共轭对的正确排序,保证系统二阶环节的分子、分母一定是实数。
dir2par 函数和cplxcomp 函数定义如下: function I=cplxcomp(p1,p2) %按共轭条件排列极点留数对%比较两个包含同样标量元素但(可能)具有不同下标的复数对 %本语句必须用在p2=cplxpair(p1)语句之后,以重新排序对应的留数向量 I=[];for j=1:length(p2) for i=1:length(p1)if(abs(p1(i)-p2(j))<0.0001) I=[I,i]; end end end I=I';function [C,B,A]=dir2par(num,den) %直接型到并联型的转换 M=length(num);N=length(den);[r1,p1,C]=residuez(num,den);%先求系统的单根p1对应的留数r1及直接项C p=cplxpair(p1,10000000*eps); I=cplxcomp(p1,p); r=r1(I);K=floor(N/2);B=zeros(K,2);A=zeros(K,3); if K*2==N;for i=1:2:N-2;Brow=r(i:1:i+1,:); Arow=p(i:1:i+1,:);[Brow,Arow]=residuez(Brow,Arow,[]); B(fix((i+1)/2),:)=real(Brow); A(fix((i+1)/2),:)=real(Arow); end[Brow,Arow]=residuez(r(N-1),p(N-1),[]); B(K,:)=[real(Brow),0];A(K,:)=[real(Arow),0]; elsefor i=1:2:N-1;Brow=r(i:1:i+1,:); Arow=p(i:1:i+1,:);[Brow,Arow]=residuez(Brow,Arow,[]);B(fix((i+1)/2),:)=real(Brow); A(fix((i+1)/2),:)=real(Arow); end end将例6-1从直接型转换为并联型的程序改写如下: b=[8,-4,11,-2];a=[1,-1.25,0.75,-0.125]; [C,B,A]=dir2par(b,a) 运行结果如下: C =16 B =-16.0000 20.0000 8.0000 0 A =1.0000 -1.0000 0.50001.0000 -0.2500 0由A,B,C 的数据可以直接写出并联型的表达式:-1-1-1-1-16+20z 8H z =16++1-z +0.5z 1-0.25z() 信号流图如图6-3所示:X(n)y(n)图6-3例6-2 已知一个系统的级联型系数公式为-1-1-2-1-1-21+0.9z 1-3z +2z H =0.51-0.25z 1+z 0.5z +(z )将其从级联型(信号流图如图6-4所示)转换为直接型和并联型结构。
X(n)y(n)图6-4分析:从级联型转换为直接型,就是将二次分式(sos )模型转换为系统传递函数(tf )模型;再使用dirpar.m 和cplxcomp.m 函数将直接型转换为并联型。
程序清单如下:sos=[1 0.9 0 1 -0.25 0 1 -3 2 1 1 0.5]; g=0.5;[b,a]=sos2tf(sos,g) [C,B,A]=dir2par(b,a) 程序运行结果如下:b = 0.5000 -1.0500 -0.3500 0.9000 a =1.0000 0.7500 0.2500 -0.1250 C =-7.2000B = 3.9846 1.6308 3.7154 0A = 1.0000 1.0000 0.5000 1.0000 -0.2500 0由b,a 的数据可以直接写出直接型的表达式:-1-2-3-1-2-30.5-1.05z -0.35z +0.9z H(z)=1+0.75z +0.25z -0.125z信号流图如图6-5所示:X(n)y(n)图6-5由A,B,C 的数据可以写出并联型的表达式:-1-1-1-13.9846+1.6308z 3.7154H(z)=+7.21+z +0.5z 1-0.25z- 信号流图如图6-6所示:X(n)y(n)图6-6(2)直接型转换为全零极点IIR 系统的格型结构 例6-3 将例6-1给定的系统传递函数-1-2-3-1-2-38-4z +11z -2z H(z)=1-1.25z +0.75z -0.125z从直接型转换为格型。
程序清单如下: b=[8,-4,11,-2];a=[1,-1.25,0.75,-0.125]; [K,C]=tf2latc(b,a) [b,a]=latc2tf(K,C) 程序运行结果如下: K =-0.7327 0.6032 -0.1250 C =8.1064 7.4841 8.5000 -2.0000b =8.0000 -4.0000 11.0000 -2.0000 a =1.0000 -1.2500 0.7500 -0.1250由K 、C 参数可以画出格型结构图,如同图6-7所示:X(n)y(n)图6-7(3)直接型转换为全极点IIR 系统的格型结构 例6-4 将一个全极点IIR 系统的传递函数-1-2-31H(z)=1-1.25z +0.75z -0.125z从直接型转换为格型结构。
程序清单如下:b=[1];a=[1,-1.25,0.75,-0.125]; K=tf2latc(b,a) [b,a]=latc2tf(K)程序运行结果如下: K = -0.7327 0.6032 -0.1250b = 1.0000 -1.2500 0.7500 -0.1250 a = 1格型结构信号流图如图6-8所示:X(n)y(n)图6-83、FIR 数字滤波器的基本结构与实现 (1)横截型与级联型之间的转换例6-5 已知一个FIR 系统的传递函数为-1-2-3H(z)=2+0.9z +1.55z +2.375z将其从横截型(信号流图如图6-9所示)转换为级联型。
X(n)y(n)1-1-1-图6-9分析:从横截型转换为级联型就是将系统传递函数(tf )模型转换为二次分式(sos )模型。
程序清单如下:b=[2,0.9,1.55,2.375]; a=[1];[sos,g]=tf2sos(b,a) [b,a]=sos2tf(sos,g) 程序运行结果如下:sos =1.0000 0.9500 0 1.0000 0 01.0000 -0.5000 1.2500 1.0000 0 0g = 2b = 2.0000 0.9000 1.5500 2.3750a = 1 0 0 0由sos和g的数据可以写出级联型的表达式:-1-1-2H(z)=2(1+0.95z)(1-0.5z+1.25z)信号流图如图6-10所示:x(n)y(n)图6-10(2)横截型转换为全零点FIR系统的格型结构例6-6已知一个FIR系统的传递函数为-1-2-34+H(z)=1+2.7917z+2z+1.375z0.3333z-将其从横截型转换为全零点FIR系统的格型结构程序清单如下:b=[1,2.7917,2,1.375,0.3333];a=[1];K=tf2latc(b,a)[b,a]=latc2tf(K)程序运行结果如下:K =2.00040.24980.50010.3333b = 1.0000 2.7917 2.0000 1.3750 0.3333a = 1由K参数画出的格型结构图如图6-11所示:x(n)y(n)图6-11三、实验内容:1、阅读并输入实验原理中介绍的例题程序,观察输出的数据,结合基本原理理解每一条语句的含义。