基于MATLAB设计巴特沃斯低通滤波器摘要:首先分析了巴特沃斯低通滤波器的特性。然后用MATLAB的信号处理工具箱提供的函数设计了巴特沃斯低通滤波器,使得巴特沃斯滤波器的设计变得更加简单、快捷、直观。巴特沃斯(Butterworth)滤波器是一种具有最大平坦幅度响应的低通滤波器,它在通信领域里已有广应用,在电测中也具有广泛的用途,可以作检测信号的滤波器。MATLAB语言是一种面向科学与工程计算的语言。它编程效率高,测试程序手段丰富,扩展能力强,内涵丰富。它的信号处理工具箱(SignalProcessingToolbox)提供了设计巴特沃斯滤波器的函数,本文充分利用这些函数,进行了巴特沃斯滤波器的程序设计,并将其作为函数文件保存,可方便地进行调用。1.巴特沃斯低通滤波器的特性巴特沃斯低通滤波器的平方幅度响应为:ncjH22)(11)(其中,n为滤波器的阶数,ωc为低通滤波器的截止频率。该滤波器具有一些特殊的性质:①对所有的n,都有当ω=0时,|H(j0)|2=1;②对所有的n,都有当ω=ωc时,|H(jωc)|2=0.5,即在ωc处有3dB的衰减;③|H(jω)|2是ω的单调递减函数,即不会出现幅度响应的起伏;④当n→+∞时,巴特沃斯滤波器趋向于理想的低通滤波器;⑤在ω=0处平方幅度响应的各级导数均存在且等于0,因此|H(jω)|2在该点上取得最大值,且具有最大平坦特性。图l展示了2阶、4阶、8阶巴特沃斯低通滤波器的幅频特性。可见阶数n越高,其幅频特性越好,低频检测信号保真度越高。巴特沃斯与贝塞尔(Besse1)、切比雪夫(Cheby.shev)滤波器的特性差异如图2所示。从图2可以看出,巴特沃斯滤波器在线性相位、衰减斜率和加载特性三个方面具有特性均衡的优点,因此在实际使用中,巴特沃斯滤波器已被列为首选。2.巴特沃斯低通滤波器的MATLAB实现MATLAB的信号处理工具箱提供了有关巴特沃斯滤波器的函数buttap、buttord、butter。2.1用buttap函数设计归一化的巴特沃斯低通滤波器系数[z,P,k]=bttap(n)可设计出n阶巴特沃斯低通滤波器原型,其传递函数为:))(())2())(1(()(npspspsksH因此实际上Z为空阵。上述零极点形式可以化为:01110)(bsbsbsbsHnnn其中nb00,巴特沃斯滤波器的归一化结果,如表1所示。2.2设计巴特沃斯滤波器的程序实现buttord函数可在给定滤波器性能的情况下,选择巴特沃斯滤波器的阶数n和截止频率ωc,从而可利用butter函数设计巴特沃斯滤波器的传递函数。[n,ωc]=buttord(ωp,ωs,Rp,Rs,'s')可得到满足性能的模拟巴特沃斯滤波器的最小阶数n及截止频率ωc,其中ωp为通带的拐角频率,ωs为阻带的拐角频率,ωp和ωs的单位均为rad/s;Rs为通带区的最大波动系数,Rp为Rs阻带区的最小衰减系数,Rp和Rs的单位都为dB。[b,a]=butter(n,ωc,'s')可设计截止频率为ωc的n阶低通模拟巴特沃斯滤波器为:)1()2()1()2()1()()()(11nasasnbsbsbsAsBsHnnnn利用buttord函数、buuer函数编制设计巴特沃斯低通滤波器的MATLAB函数文件butterdesign.m,其清单如下:Function[Nbutt,Wcbutt,bbutt,abutt]=butterdesign(Wp,Rp,Ws,As)[Nbutt,Wcbutt]=buttord(Wp,Ws,Rp,As,’S’);[bbutt,abutt]=butter(Nbutt,Wcbutt,’S’);[hbutt,Wbutt]=freqs(bbutt,abutt);subplot(2,1,1);plot(WbuR,abs(hbutt));subplot(2,1,2);plot(W'butt,angle(hbutt));为了使程序更通用,采用以下命令从键盘上输入巴特沃斯滤波器的性能指标。Wp=input(’Pleaseinputpassbandcomerfrequencyinrad/sWp=’)Rp=input(’PleaseinputpassbandrippleindBRp=’)Ws=input(’Pleaseinputstopbandcomerfrequencyinrad/sWs=’)As=input(’PleaseinputstopbandattenuationindBAs=’)调用butterdesign函数就可设计出满足性能指标的巴特沃斯滤波器,其主程序文件名为buttermain.m。下面举例说明巴特沃斯滤波器的计算机辅助设计过程。设计一模拟巴特沃斯低通滤波器,其通带的拐角频率ωp为0.2π,通带区的最大波动系数Rp为7dB,阻带的拐角频率ωs为0.3π,阻带区的最小衰减系数Rs为16dB。在MATLAB命令窗口中输入buttermain,根据屏幕上的提示分别输入0.2*pi,7,0.3*pi,16,就可得到满足性能指标的巴特沃斯低通滤波器的最小阶数n=3,截止频率ωc=0.5122rad/s,其传递函数为:1344.05247.00244.11344.0)(23ssssH同时得到图3所示的巴特沃斯低通滤波器曲线。3.结束语利用本文的butterdesign函数就可以轻而易举地设计出满足性能指标要求的巴特沃斯滤波器的最小阶数n及截止频率ωc,并绘制出巴特沃斯滤波器的频率特性曲线,使得巴特沃斯滤波器的设计变得更加简单、快捷、直观。参考文献[1]张殿龙,王福文.巴特沃斯低通滤波器在电动机测试中的应用[J].电测与仪表,2001.[2]王永初.Buttworth滤波器在过程控制中的应用[J].工业仪表与自动化装置,1994,6.[3]陈思.巴特沃斯低通滤波器的简化快速设计[J].信阳师范学院学报(自然科学版),1997.[4]楼顺天,李博菡.基于MATLAB的系统分析与设计——信号处理[M].西安电子科技大学出版社,1998.