资源描述:
《实验二用双线性变换法设计iir数字滤波器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数字信号处理实验二用双线性变换法设计IIR数字滤波器一、实验目的1.熟悉用双线性变换法设计IIR数字滤波器的原理与方法;2.掌握数字滤波器的计算机仿真方法;3.通过观察对实际心电图的滤波作用,获得数字滤波器的感性知识。二、实验内容1.用双线性变换法设计一个巴特沃斯低通IIR滤波器,设计指标参数为:在通带内频率低于0.2π时,最大衰减小于1dB;在阻带内[0.3π,π]频率区间上,最小衰减大于15dB2.以0.2π为采样间隔,打印出数字滤波器在频率区间[0,0.2π]上的幅值响应曲线。3.用所设计的滤波器对实际的心电图信号采样序列x(n
2、)=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];)进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果。三、实验步骤1.复习有关巴特沃斯模拟滤波器设计和双线性变换法设计IIR滤波器的内容2.参考例子程序用MATLAB语言编写仿真实验用程序;3
3、.在通用计算机上运行仿真程序4.写出完整的实验报告并回答思考题。四、思考题用双线性变换设计数字滤波器的过程中,下面变换公式的T值的取值,对设计结果是否有影响?为什么?四、IIR滤波器设计的常用函数1.Butter功能:Butterwoeth(巴特沃斯)数字滤波器设计。格式:[b,a]=butter(n,Wn)可设计出截止频率为Wn的n阶低通Butterwoeth滤波器,其滤波器为截止频率是滤波器幅度下降至处的频率.2.ButtordIIR(巴特沃斯)滤波器阶的选择格式[n,Wn]=buttord(Wp,Ws,Rp,Rs)-------
4、---数字域[n,Wn]=buttord(Wp,Ws,Rp,Rs,’s’)-----模拟域说明:buttord可在给定滤波器性能的情况下,选择模拟或数字Butterword滤波器的最小阶,其中Wp和Ws分别是通带和阻带的截止频率,其值,当其值为1时,表示0.5,Rp,RS分别是通带和阻带区的波纹系数。例如:设计一低通滤波器,通带范围0~100Hz,通带波纹小于3dB,阻带为-30dB,并利用最小的阶来实现,其程序如下Wp=100/500;Ws=200/500;[n,Wn]=buttord(Wp,Ws,3,30);[b,a]=butte
5、r(n,Wn);freqz(b,a,512,1000)图低通滤波器特性(n=8)%question2用双线性变换法设计FIRT=1;Fs=1/T;wpz=0.2;wsz=0.3;wp=2*tan(wpz*pi/2);ws=2*tan(wsz*pi/2);rp=1;rs=15%预畸变校正转换指标[N,wc]=buttord(wp,ws,rp,rs,'s');%设计过渡模拟滤波器,计算数字滤波器阶数和3dB截止频率[B,A]=butter(N,wc,'s');%绘制模拟滤波器的损耗函数曲线fk=0:1/512:1;wk=2*pi*fk;H
6、k=freqs(B,A,wk);figure(1)subplot(1,2,1);plot(fk,20*log10(abs(Hk)));gridonxlabel('f(Hz)');ylabel('幅度(dB)')axis([0,0.9,-100,5]);title('(a)模拟滤波器幅度特性');%用双线性变换法转换成数字滤波器,并绘制损耗曲线[Bz,Az]=bilinear(B,A,Fs);wk=0:pi/512:pi;Hz=freqz(Bz,Az,wk);subplot(1,2,2);plot(wk/pi,20*log10(abs(
7、Hz)));gridon;xlabel('omega/pi');ylabel('幅度(dB)')axis([0,1,-100,5]);title('(b)数字滤波器幅度特性');x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];%x(n)采样序列figure(2)%绘
8、制滤波前x(n)采样序列图subplot(2,2,1)n=0:55;stem(n,x,'.');xlabel('n');ylabel('x(n)');title('x(n)采样序列');%x(n)通过滤波器后的输出序列y