资源描述:
《IIR滤波器的MATLAB设计.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、IIR滤波器的MATLAB设计姓名:王照义学号:班级:2010级通信工程日期:2012年12月12日摘要在现代通信系统中,由于信号中经常混有各种复杂成分,所以很多信号分析都是基于滤波器而进行的,而数字滤波器是通过数值运算实现滤波,具有处理精度高、稳定、灵活、不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊滤波功能。数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。实现IIR滤波器的阶次较低,所用的存储单元较少,效率高,精度高,而且能够保留一
2、些模拟滤波器的优良特性,因此应用很广。Matlab软件以矩阵运算为基础,把计算、可视化及程序设计有机融合到交互式工作环境中,并且为数字滤波的研究和应用提供了一个直观、高效、便捷的利器。尤其是Matlab中的信号处理工具箱使各个领域的研究人员可以直观方便地进行科学研究与工程应用。本文首先介绍了数字滤波器的概念,分类以及设计要求。接着利用MATLAB函数语言编程,用信号处理图形界面FDATool来设计滤波器以及Sptool界面设计的方法,并用FDATool模拟IIR数字滤波器处理信号。重点设计ChebyshevI型和Che
3、byshevII型数字低通滤波器,并介绍最优化设计。【关键字】IIR滤波器FDAToolSptoolSimulinkMATLAB是矩阵实验室(MatrixLaboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.在新的版本中也加入了对C,FORTRAN,c++,JAVA的支持.可以直接调用,用
4、户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用,非常的方便。模拟滤波器的理论和设计方法已发展得相当成熟,且有一些典型的模拟滤波器供我们选择,如巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Cauer)滤波器、贝塞尔(Bessel)滤波器等,这些典型的滤波器各有特点。用MATLAB进行数字滤波器的设计的步骤如下:(1)将设计指标归一化处理。如果采用双线性变换法,还需进行预畸变。
5、(2)根据归一化频率,确定最小阶数N和频率参数Wn。可供选用的阶数择函数有:buttord,cheblord,cheb2ord,ellipord等。(3)运用最小阶数N设计模拟低通滤波器原型。模拟低通滤波器的创建函数有:buttap,cheblap,cheb2ap,ellipap和besselap,这些函数输出的是零极点式形式,还要用zp2tf函数转换成分子分母多项式形式。如果想根据最小阶数直接设计模拟低通滤波器原型,可用butter,chebyl,cheby2,ellip,bessel等函数,只是注意要将函数中的Wn
6、设为1。(4)根据第2步的频率参数Wn,模拟低通滤波原型转换模拟低通、高通、带通、带阻滤波器,可用函数分别是:lp21p,lp2hp,lp2bp,lp2bs。(5)运用脉冲响应不变法或双线性变法把模滤波器转数字滤波器,调用的函数是impinvar和bilinear。脉冲响应不变法适用于采样频率大于4倍截止频率的锐截止低通带通滤波器,而双线性变换法适合于相位特性要求不高的各型滤波器。(6)根据输出的分子分母系数,调用函数buttord计算N和wc,有系数向量可以写出数字滤波器系统函数Z,再用freqz函数验证设计结果。I
7、IR数字滤波器的典型设计法设计巴特沃斯数字低通滤波器和椭圆数字低通滤波器,要求通带边界频fp=2.1kHZ,通带最大衰减Rp=0.5dB;阻带边界频率fs=8kHZ,阻带最小衰减Rs=30dB,采样频率为Fs=20kHZ。低通巴特沃斯滤波器设计步骤如下:(1)确定阶数N。取N=4(2)求极点,,,,归一化低通原型系统函数为由N=4直接查表得到:极点:归一化低通滤波器系统函数为式中,0.0000,0.0999,0.1914,0.0252(3)将去归一化最终得到通过计算可以总结出过程太麻烦,而且容易出错,结果不直观。下面用
8、M程序设计来实现用脉冲响应不变法设计的巴特沃斯数字低通滤波器的M程序如下:fp=2100;fs=8000;Fs=20000;Rp=0.5;Rs=30;T=1/Fs;%设计指标W1p=fp/Fs*2;W1s=fs/Fs*2;%求归一化频率[N,Wn]=buttord(W1p,W1s,Rp,Rs,'s');%确定butterworth