云南大学信息学院数字信号处理实验报告1实验八数字滤波器实现实验室名称:信息学院2204实验时间:2015年11月26日姓名:蒋逸恒学号:20131120038专业:通信工程指导教师:陶大鹏成绩教师签名:年月日一、实验目的1、学会使用matlab设计符合要求的数字滤波器的参数。2、学会使用基本的matlab命令,把获得的数字滤波器参数带到传输函数中写出传输函数,之后利用之前的实验知识,画出滤波器级联框图,实现滤波器。3、学会使用得到的数字滤波器结构仿真滤波过程并能验证滤波器的结构是否正确。二、实验内容Q8.1程序p8.1设计了什么类型的滤波器?指标是什么?滤波器的阶数是多少?为了验证仿真,需验证多少个冲激响应样本?仿真时正确的吗?Q8.2用转置的直接Ⅱ型仿真滤波器,修改并运行P8.1,仿真时正确的吗?Q8.3生成习题Q8.1中产生传输函数的一个级联实现,并编写出一个程序来仿真它,其中每个单独的部分用一个直接Ⅱ型实现,验证仿真。Q8.5生成在习题Q8.1中产生的传输函数的并联Ⅰ型实现,并编写出一个程序来仿真它,其中每个单独的部分用一个直接Ⅱ型实现,验证仿真。Q8.6生成在习题Q8.1中产生的传输函数的并联Ⅱ型实现,并编写出一个程序来仿真它,其中每个单独的部分用一个直接Ⅱ型实现,验证仿真。Q8.7运行程序p8.2并产生被仿真的级联格型结构的传输函数。该传输函数与公式中产生的相同吗?Q8.9程序p8.3设计了什么类型的滤波器?指标是什么?滤波器的阶数是多少?形成正弦序列的频率是多少?Q8.10运行程序p8.3并产生两个图形,那种频率成分会在滤波器输出出现?为什么输出序列的开始部分不是理想的正弦曲线?修改程序,只滤过x2[n],产生的输出序列和预料的一样吗?Q8.14程序p8.4设计了什么类型的滤波器?指标是什么?滤波器的阶数是多少?为了验证仿真,需验证多少个冲激响应样本?仿真时正确的吗?Q8.15用直接Ⅱ型仿真滤波器,修改并运行P8.4,仿真时正确的吗?Q8.16生成习题Q8.14中产生传输函数的一个级联实现,并编写出一个程序来仿真它,其中每一个部分用一个直接Ⅱ型实现,验证仿真。云南大学信息学院数字信号处理实验报告2三、实验器材及软件1.微型计算机1台2.MATLAB7.0软件四、实验原理数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。FIR的设计在matlab中其实也同样很简单,其主要思想是通过先设计出无限长的IIR滤波器再通过截尾的方式获得一个FIR滤波器,但是简单的截尾会出现吉布斯现象,所以此时还需要对截尾之后的结果加窗;来减小吉布斯震荡现象。在设计得到的滤波器传输函数的系数之后,我们需要通过matlab编程获得滤波器的结构,从而画出该滤波器物理的电路实现上的结构框图,当然数字滤波器可以使用软件编程的方式实现,此时我们将传输函数的系数带入某些函数即可直接得到该滤波器滤波之后的输出信号。对于本章实验内容,最主要的就是设计出的滤波器系数带入函数direct2或者filter中去进行滤波,然后输出结果,来仿真滤波器的效果,同时可以通过将滤波的输出结果带入函数strucver中来推出该滤波器的结构(即滤波器的传输函数系数),从而检验滤波器是否正确。数字滤波器的结构可以是级联形式或者并联形式,在传输函数中分别对应着各个小项相乘或者相加,当然也可以不使用级联形式直接使用直接型(传输函数不变形)来构建框图结构。对于构建的各个小项我们可以分别使用filter函数或者direct函数来对某信号进行滤波,如果是级联型的传输函数则需要将前面的滤波输出作为后面的输入,从而形成级联结构;对于并联结构则需要将某信号分别输入所有的滤波器小项中对所有的小项分别进行滤波,然后把所有的输出叠加到一起。五、实验步骤1、进行本实验,首先必须熟悉matlab的运用,所以第一步是学会使用matlab。2、学习相关基础知识,根据《数字信号处理》课程的学习理解实验内容和目的。3、在充分熟悉基础知识的情况下进行实验,利用matlab的函数设计出滤波器传输函数的系数。4、利用系数构造出滤波器结构,包括直接型,级联型和并联型。5、仿真滤波器,并进行滤波器验证。6、小结本实验,通过小结发现问题并解决问题。云南大学信息学院数字信号处理实验报告3六、实验记录(数据、图表、波形、程序等)8.1输入:Wp=[0.40.5];Ws=[0.10.8];Rp=1;Rs=30;[N1,Wn1]=buttord(Wp,Ws,Rp,Rs);[num,den]=butter(N1,Wn1);disp('分子系数');disp(num);disp('分母系数');disp(den);impres=direct2(num,den,[1zeros(1,4*N1)]);[p,d]=strucver(impres,2*N1);disp('实际分子系数');disp(p');disp('实际分母系数');disp(d');输出:分子系数0.05710-0.114300.0571分母系数1.0000-0.50991.2862-0.33500.4479实际分子系数0.0571-0.0000-0.11430.00000.0571实际分母系数1.0000-0.50991.2862-0.33500.4479与设计的结构输出一致,验证了正确性。8.2输入:Wp=[0.40.5];Ws=[0.10.8];Rp=1;Rs=30;[N1,Wn1]=buttord(Wp,Ws,Rp,Rs);[num,den]=butter(N1,Wn1);disp('分子系数');disp(num);disp('分母系数');disp(den);x=[1,zeros(1,4*N1)];y=filter(num,den,x);[p,d]=strucver(y,2*N1);disp('实际分子系数');disp(p');disp('实际分母系数');disp(d');输出:分子系数0.05710-0.114300.0571分母系数1.0000-0.50991.2862-0.33500.4479实际分子系数0.05710.0000-0.114300.0571实际分母系数1.0000-0.50991.2862-0.33500.4479与设计的结构输出一致,验证了正确性。云南大学信息学院数字信号处理实验报告48.3生成传输函数的级联实现:num=input('分子=');den=input('分母=');[z,p,k]=tf2zp(num,den);sos=zp2sos(z,p,k);输入:分子=[0.05710-0.114300.0571]分母=[1.0000-0.50991.2862-0.33500.4479]输出:sos=0.05710.11420.05711.00000.08770.66011.0000-2.00041.00001.0000-0.59760.6785仿真结构与验证:num1=[0.05710.11420.0571];num2=[1.00000.08770.6601];den1=[1.0000-2.00041.0000];den2=[1.0000-0.59760.6785];x=[1zeros(1,4)];impres1=direct2(num1,den1,x);impres2=direct2(num2,den2,x);[p1,d1]=strucver(impres1,2);[p2,d2]=strucver(impres2,2);p=[p1'p2'];d=[d1'd2'];disp('实际分子系数');disp(p);disp('实际分母系数');disp(d);输出:实际分子系数0.05710.11420.05711.00000.08770.6601实际分母系数1.0000-2.00041.00001.0000-0.59760.6785与设计的结构输出(设计的结构输出是sos变量)一致,验证了正确性。8.5生成传输函数的并联I型实现:num=input('分子系数=');den=input('分母系数=');[r1,p1,k1]=residuez(num,den);disp('并联I型')R1=[r1(1),r1(2)];云南大学信息学院数字信号处理实验报告5P1=[p1(1),p1(2)];[b1,a1]=residuez(R1,P1,0);R2=[r1(3),r1(4)];P2=[p1(3),p1(4)];[b2,a2]=residuez(R2,P2,0);b=[b1b2]a=[a1a2]输入:分子系数=[0.05710-0.114300.0571]分母系数=[1.0000-0.50991.2862-0.33500.4479]输出:并联I型b=-0.0479-0.29120-0.02280.34690a=1.0000-0.59560.67741.00000.08570.6599仿真结构与验证:num1=[-0.0479-0.29120];num2=[-0.02280.34690];den1=[1.0000-0.59560.6774];den2=[1.00000.08570.6599];x=[1zeros(1,4)];impres1=direct2(num1,den1,x);impres2=direct2(num2,den2,x);[p1,d1]=strucver(impres1,2);[p2,d2]=strucver(impres2,2);p=[p1'p2'];d=[d1'd2'];disp('实际分子系数');disp(p);disp('实际分母系数');disp(d);输出:实际分子系数-0.0479-0.2912-0.0000-0.02280.3469-0.0000实际分母系数1.0000-0.59560.67741.00000.08570.6599与设计的结构输出(设计的结构输出是a,b变量)一致,验证了正确性。云南大学信息学院数字信号处理实验报告68.6生成传输函数的并联II型实现:num=input('分子系数=');den=input('分母系数=');[r1,p1,k1]=residue(num,den);disp('并联II型')R1=[r1(1),r1(2)];P1=[p1(1),p1(2)];[b1,a1]=residuez(R1,P1,0);R2=[r1(3),r1(4)];P2=[p1(3),p1(4)];[b2,a2]=residuez(R2,P2,0);b=[b1b2]a=[a1a2]输入:分子系数=[0.05710-0.114300.0571]分母系数=[1.0000-0.50991.2862-0.33500.4479]输出:并联II型b=-0.31760.03190.00000.34670.01550.0000a=1.0000-0.59760.67851.00000.08770.6601仿真结构与验证:num1=[-0.31760.03190.0000];num2=[0.34670.01550.0000];den1=[1.0000-0.59760.6785];den2=[1.00000.08770.6601];x=[1zeros(1,4)];impres1=direct2(num1,den1,x);impres2=direct2(num2,den2,x);[p1,d1]=strucver(impres1,2);[p2,d2]=strucver(impres2,2);p=[p1'p2'];d=[d1'd2'];disp('实际分子系数');disp(p);disp('实际分母系数');disp(d);输出:实际分子系数-0.31760.031900.34