实验六数字滤波器结构一:实验目的1.掌握IIR滤波器的三种结果(直接形式、级联形式、并联形式)及其互相形式。
2.掌握线性相位FIR滤波器的四种结构(横截形、级联形、线性相位形、频率抽样形)及其互相转换。
6.1 级联的实现程序P6.1如下:% 程序 P6_1% 将一个有理数传输函数% 转化为因式形式num = input('分子系数向量 = ');den = input('分母系数向量 = ');[z,p,k] = tf2zp(num,den);sos = zp2sos(z,p,k)习题:1.使用程序P6.1,生成如下有限冲激响应传输函数的一个级联实现:H1(z)=2+10z^(-1)+23z^(-2)+34z^(-3)+31z^(-4)+16z^(-5)+4z^(-6)画出级联实现的框图。
H1(z)是一个线性相位传输函数吗?答:级联框图:H1(z)不是一个线性相位传输函数,因为系数不对称。
2.使用程序P6.1,生成如下有限冲激响应传输函数的一个级联实现:H2(z)=6+31z^(-1)+74z^(-2)+102z^(-3)+74z^(-4)+31z^(-5)+6z^(-6)画出级联实现的框图。
H2(z)是一个线性相位传输函数吗?只用4个乘法器生成H2(z)的一个级联实现。
显示新的级联结构的框图。
答:级联框图:H2(z)是一个线性相位传输函数。
只用四个乘法器生成级联框图:6.2级联和并联实现习题:3.使用程序P6.1生成如下因果无限冲激响应传输函数的级联实现:画出级联实现的框图。
答:级联实现框图:4.使用程序P6.1生成如下因果无限冲激响应传输函数的级联实现:画出级联实现的框图。
答:级联实现框图:程序P6.2生成两种类型的并联实现,程序如下:% 程序 P6_2% 一个无限冲激响应传输函数的并联形式实现num = input('分子系数向量 = ');den = input('分母系数分量 = ');[r1,p1,k1] = residuez(num,den);[r2,p2,k2] = residue(num,den);disp('并联I型')disp('留数是');disp(r1);disp('极点在');disp(p1);disp('常数');disp(k1);disp('并联II型')disp('留数是');disp(r2);disp('极点在');disp(p2);disp('常数');disp(k2);习题:5.使用程序P6.2生成式(6.27)所示因果无限冲激响应传输函数的两种不同并联形式实现。
画出两种实现的框图。
答:并联I型框图:并联II型框图:6.使用程序P6.2生成式(6.28)所示因果无限冲激响应传输函数的两种不同并联形式实现。
画出两种实现的框图。
答:并联I型框图:并联II型框图:项目6.4 全通函数的实现回答:Q6.7 使用程序P4_4我们可以得到A5(z)的{k i} :k(5) = 0.0625 k(4) = 0.2196 k(3) = 0.4811 k(2) = 0.6837 k(1) = 0.6246A5(z)的级联格型实现的结构框图显示如下:从{k i}的值我们可以得到传输函数A5(z)是–稳定的,因为对所有1<i<5有k i2<1Q6.8 使用程序P4_4我们可以得到A6(z)的{k i}值如下:k(6) = 0.0278 k(5) = 0.1344 k(4) = 0.3717 k(3) = 0.5922 k(2) = 0.7711k(1) = 0.8109A6 (z)的级联格型实现的结构框图如下:从{k i}的值我们可以得到传输函数A6(z)是–稳定的反馈系数的平均幅值小于整体Q6.9 使用zp2sos我们可以得到A5(z)的因子:sos =0.0625 0.1250 0 1.0000 0.5000 01.00002.0000 4.0000 1.0000 0.5000 0.25001.0000 1.00002.0000 1.0000 0.5000 0.5000从上面的因子我们可以分解A5(z)到低次的全通因子如下:使用1型和2型全通项生成所示全通函数的典范级联实现,实现的结构框图如下:整体结构中乘法器的总数是_____5______.Q6.10 使用zp2sos我们可以得到A6(z)的因子:sos =0.0278 0.0556 0.1111 1.0000 0.5000 0.25001.00002.00003.0000 1.0000 0.6667 0.33331.0000 3.0000 3.0000 1.0000 1.0000 0.3333从上面因子我们可以分解A6(z)为低阶的全通因子:使用2型的全通项生成A6(z)的典范级联实现框图如下:整体结构中总共有乘法器___6________个.项目6.5 无限冲激响应传输函数的Gray_Markel实现程序P6_3如下:% Program P6_3% Gray-Markel Cascaded Lattice Structure% k is the lattice parameter vector% alpha is the vector of feedforward multipliersformat long% Read in the transfer function coefficientsnum = input('Numerator coefficient vector = ');den = input('Denominator coefficient vector = ');N = length(den)-1; % Order of denominator polynomialk = ones(1,N);a1 = den/den(1);alpha = num(N+1:-1:1)/den(1);forii = N:-1:1,alpha(N+2-ii:N+1) = alpha(N+2-ii:N+1)-alpha(N-ii+1)*a1(2:ii+1);k(ii) = a1(ii+1);a1(1:ii+1) = (a1(1:ii+1)-k(ii)*a1(ii+1:-1:1))/(1-k(ii)*k(ii));enddisp('Lattice parameters are');disp(k)disp('Feedforward multipliers are');disp(alpha)回答:Q6.11 使用程序P6_3我们通过IIR将Q6.3给的正向传输函数H1(z) 的Gray-Markel级联格型实现参数:从这些参数我们可以知道对应Gray-Markel的结构框图如下:使用程序P6_3,从这些格型参数可以得到传输函数H1(z)是–稳定的,因为所有格型参数的平方值比整体的小。
Q6.1 使用程序P6.3生成式(6.28)所示因果无限冲激响应传输函数的Gray-Market实现。
运行结果如下:Numerator coefficient vector = [2 10 23 34 31 16 4]Denominator coefficient vector = [36 78 87 59 26 7 1]Lattice parameters areColumns 1 through 40.810935846413523 0.771127725064015 0.5921518776998420.371690524785502Columns 5 through 60.134362934362934 0.027777777777778Feedforward multipliers areColumns 1 through 40.111111********* 0.203703703703704 0.151994851994852-0.047392657732535Columns 5 through 7-0.014564520383792 0.023453136625124 -0.011120370334857 框图如下:该传输函数是稳定的。
Q6.2 使用函数tf2latc编写出一个MATLAB程序,以生成一个因果无限冲激响应传输函数的GrayMarkel实现。
用该程序实现式(6.27)所示的传输函数。
你的结果与习题6.11中得到的结果相符吗?使用函数1atc2tf由向量k和alpha确定传输函数。
所得到的传输函数和式(6.27)给出的传输函数相同吗?程序如下:% Program P6_4% Gray-Markel Cascaded Lattice Structure using tf2latc.% k is the lattice parameter vector% alpha is the vector of feedforward multipliers% Program also computes the inversion of the lattice/ladder vectors.format long% Read in the transfer function coefficientsnum = input('Numerator coefficient vector = ' );den = input('Denominator coefficient vector = ' );num = num/den(1); % normalize upstairs and down by d0.den = den/den(1);% here is the lattice/ladder realization from the transfer fcn:[k,alpha] = tf2latc(num,den)% now check inversiondisp('Check of Lattice/Ladder Inversion:' );[num2,den2] = latc2tf(k,alpha)运行结果如下:k =0.624596860890130.683737827429190.481119423483980.219607843137250.06250000000000alpha =-0.01982100623522-0.090851695086770.184300471408490.160539215686270.31250000000000-0.12500000000000结果与习题6.11中得到的结果相符。