数字系统设计与仿真实验报告学院:南湖学院系别:机械与电子工程系班级:11电信——1F姓名:学号:24112200001指导老师:实验三:IIR数字滤波器设计及软件实现1.实验目的(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法。(2)学会根据滤波需求确定滤波器指标参数。(3)学会调用滤波器设计分析工具fdatool设计各种IIR数字滤波器。(4)掌握IIR数字滤波器的MATLAB实现方法。(5)通过观察滤波器输入输出信号的波形,建立数字滤波的概念。2.实验原理设计IIR数字滤波器一般采用间接法,即先设计一个模拟滤波器原型,再利用脉冲响应不变法或双线性变换法变换成数字滤波器,其中,应用最广泛的是双线性变换法。本实验要求能根据滤波需求确定滤波器指标参数,学会按设计原理编程设计和调用滤波器设计分析工具fdatool设计各型IIR数字滤波器。本实验软件实现是调用MATLAB信号处理工具箱函数filter函数对给定输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。3.实验内容及步骤(1)IIR数字滤波器设计根据双线性变换法设计IIR数字滤波器的原理和步骤,设计一个butterworth数字低通滤波器,要求通带临界频率fp=3400Hz,阻带临界频率fs=5000Hz,通带内的最大衰减Ap=2dB,阻带内的最小衰减As=20db,采样频率Fs=22050Hz。(2)IIR数字滤波器软件实现利用第(1)步设计的数字滤波器,调用filter函数对信号进行滤波,观察滤波前后的信号波形变化,建立数字滤波的概念。4.思考题(1)简述双线性变换法设计IIR数字滤波器的设计步骤。1.学习有关巴特沃斯模拟滤波器设计和用双线性变换法设计IIR数字滤波器的内容,按照教材中方法,用双线性变换法设计数字滤波器系统函数H(z)。方法一:根据教材中已求出满足本实验要求的数字滤波器系统函数:方法二:根据设计指标,调用MATLAB信号处理工具箱函数buttord和butter,也可得到H(z)。2.编写滤波器仿真程序,计算H(z)对心电图信号采样序列x(n)的相应序列y(n)。3.在通过计算机上运行仿真滤波程序,并调用通用绘图子程序,完成实验内容(2)和(3)。本实验要用的MATLAB绘图函数参阅教材。(2)为了观察数字滤波的效果,应怎样设计滤波前的信号?可以用MATLAB产生一个由两个正弦波混叠的信号,然后将其输出地数据存储在一个文本文件中,再导入滤波器的测试文件中就可以了:N=256;n=1:256;x=fix(128+(2^7-10)*sin(2*pi*n/N));plot(x)fid=fopen('e:/sin.txt','wt');fprintf(fid,'%x\n',x);fclose(fid);5.实验报告要求(1)结合实验内容打印程序清单和信号波形。(2)对实验结果进行简单分析和解释。(3)简要回答思考题。附:IIR数字滤波器的工具设计法工具设计法是利用MATLAB提供的滤波器设计与分析工具(FDATool)进行设计的一种方法。在命令窗口输入FDATool,即可打开如图所示的图形用户界面设计窗口。该窗口分为上下两部分:上面是设计结果显示;下面用来设定所需的技术参数。FDATool需设置的参数主要有响应类型、设计方法、滤波器阶数及选项、频率参数和幅度参数等项目,不同类型和不同方法的滤波器设计参数不尽相同,图中给出的是某设计实例的设计指标。设置好技术指标后,点击DesignFilter按键,即可完成设计。想对设计结果进行分析,可通过分析菜单或相关工具进行分析。如要将设计结果以传输函数的分子分母形式输出,先运行Edit/converttosinglesection命令,再运行File/Export…命令,在弹出的对话框中给变量命名为bz和az,即可在工作空间得到设计结果。%(1)IIR数字滤波器设计clear;clc;closeall;formatcompactfp=3400,Ap=2,fs=5000,As=20,Fs=22050,wp=2*pi*fp/Fs,ws=2*fs/Fs,T=2,FS=1/T,Wp=tan(wp/2),Ws=tan(ws/2),N=ceil(log10((10.^(0.1*Ap)-1./(10.^(0.1*As)-1)/...(2*log10(Wp/Ws))),Wcp=Wp/((10^(.1*Ap)-1)^(1/(2*N))),Wcs=Ws/((10^(.1*As)-1)^(1/(2*N))),Wc=Wcs,[bp,ap]=butter(N,1,'s'),[bs,as]=lp2lp(bp,ap,Wc),[bz,az]=bilinear(bs,as,Fs),sys=tf(bz,az,1/Fs),freqz(bz,az,512,Fs),图一数字滤波前后MATLAB仿真图形%(2)IIR数字滤波器软件实现clear;clc;closeall;formatcompactbz=[0.00470.02800.07000.09330.07000.02800.0047],az=[1.0000-1.91612.1559-1.38660.5585-0.12570.0125],n=[0:199];xn=sin((2*pi*3400/22050)*n)+sin((2*pi*5000/22050)*n);yn=filter(bz,az,xn);subplot(2,1,1);plot(xn);title('滤波前信号');subplot(2,1,2);plot(yn);title('滤波后信号');050100150200-2-1012滤波前信号050100150200-1-0.500.51滤波后信号图二滤波前后离散波形050100150200-2-1012滤波前信号050100150200-1-0.500.51滤波后信号图三滤波前后连续波形6.实验总结:通过这次实验我学会了MATLABIIR滤波器的设计,掌握了不同IIR滤波器的性质、特点、并通过实验学会了如何设计各种常用的IIR滤波器,以便在实际生活应用中根据具体情况使用IIR滤波器。这次实验还让我体会到了,做什么是奇怪都要认真细心,坚持不懈才能真正学到东西。