1 背景
在线性系统中,信号滤波过程一般定义为,当输入波形通过一个系统时,对它作一个线性运算,在时间域上这种变换如像内插,外插微分和积分,在频率域上这种变换则如低通滤波或平滑,带通滤波,谱设计和谱分析。如模拟滤波器对连续时间信号的这种运算,在数学上是用线性常系数微分方程确定的。用拉普拉斯变换可在S域内进行这些运算的分析。用傅立叶变换则在f域内分析。同样的,可用常系数线性方程来定义离散时间信号的线性变换,并且用二变换来分析和合成离散时间滤波器[1]。
当今,数字信号处理技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科;它与国民经济息息相关,与国防建设紧密相连;它影响或改变着我们的生产、生活方式,因此受到人们普遍的关注。
数字化、智能化和网络化是当代信息技术发展的大趋势,而数字化是智能化和网络化的基础,实际生活中遇到的信号多种多样,例如广播信号、电视信号、雷达信号、通信信号、导航信号等等。上述这些信号大部分是模拟信号,也有小部分是数字信号。模拟信号是自变量的连续函数,自变量可以是一维的,也可以是二维或多维的。大多数情况下一维模拟信号的自变量是时间,经过时间上的离散化(采样)和幅度上的离散化(量化),这类模拟信号便成为一维数字信号。因此,数字信号实际上是数字序列表示的信号,语音信号经采样和量化后,得到的数字信号是一个一维离散时间序列;而图像信号的经采样和量化后,得到的是数字信号是一个二维离散空间序列[2]。
数字滤波技术是数字信号分析、处理技术的重要分支。无论是信号的获取、传输,还是信号的处理和交换都离不开滤波技术,它对信号安全可靠和有效灵活地传输时至关重要的。在所有的电子系统中,使用最多技术最复杂的要算数字滤波器了。数字滤波器的优劣直接决定产品的优劣。
数字滤波是从20世纪60年代发展起来的,当时主要采用计算机模拟的方法研究数字滤波问题。到了70年代,开始将微处理器应用于数字滤波。但是由于微处理器速度不高,在很多场合都难以实现实时处理。随着VLSI技术的发展,使用硬件来实现数字滤波器已成为可能。80年代,通用数字信号处理器的成熟和大量涌现,使得音频范围内数字滤波技术迅速得到广泛的应用。近些年来,除了不断提高通用信号处理器的速度和功能外,还出现了许多工作频率达100MHZ以上的专用芯片和积木式部件,从而使数字滤波技术进入视频实时处理阶段[3]。
数字滤波在通信、图像编码、语言编码、雷达等许多领域中有着十分广泛的应用。目前,数字信号滤波器的设计图像处理、数据压缩等方面的应用取得了令人瞩目的进展和成就。近年来迅速发展起来的小波理论,由于其局部分析性能的优异在图像处理中的应用研究,尤其是在图像压缩、图像去噪等方面的应用研究。
FIR数字滤波器以其良好的线性特性被广泛应用于现代电子通信系统中,是数字信号处理的重要内容之一。Matlab软件含有多种现成的函数和工具箱,在滤波器设计时只需要调用这些窗函数修改关键数据即可实现不同要求的滤波器设计 [11]。本文主要介绍的是采用窗函数法设计实现FIR带通滤波器。
由上面的分析可知,窗函数法的设计关键是窗函数的选择。实际应用中比较常用的窗函数有:矩形窗函数、三角形((Bartlett)窗函数、汉宁(Hanning)窗函数、哈明(Hamming)窗函数、布莱克曼(Blackman)窗函数和凯塞(Kaiser)窗函数。下面首先介绍这些窗函数的特点。
这几种窗函数的参数比较如表1所示。
表1 六种窗函数的基本参数
窗函数 | 旁瓣峰值幅度/dB | 过渡带宽 | 阻带最小衰减/dB |
矩形窗 | -13 | 4π/N | -12 |
三角形窗 | -25 | 8π/N | -25 |
汉宁窗 | -31 | 8π/N | -44 |
哈明窗 | -41 | 8π/N | -53 |
布莱克曼窗 | -57 | 12π/N | -74 |
凯塞窗 | -57 | 10π/N | -80 |
窗函数的选择原则是:
(1)具有较低的旁瓣幅度,尤其是第一旁瓣幅度;
(2)旁瓣幅度下降速度要大,以利增加阻带衰减;
(3)主瓣的宽度要窄,以获得较陡的过渡带[12]。
通常上述三点很难同时满足。当选用主瓣宽度较窄时,虽然得到较陡的过渡带,但通带和阻带的波动明显增加:当选用最小的旁瓣幅度时,虽能得到匀滑的幅度响应和较小的阻带波动,但过渡带加宽。因此,实际选用的窗函数往往是它们的折衷。在保证主瓣宽度达到一定要求的条件下,适当牺牲主瓣宽度来换取旁瓣波动的减少。
本文以带通滤波器的设计为例,介绍窗函数法的实现。用窗函数法设计FIR数字滤波器的步骤如下:
1 根据对阻带衰减及过渡带的指标要求,选择窗函数的类型,并估计窗口长度N。先按照阻带衰减选择窗函数类型。原则是保证阻带衰减满足要求的情况下,尽量选择主瓣窄的窗函数。然后根据过渡带宽度估计窗口长度N。待求滤波器的过渡带宽度近似等于窗函数主瓣宽度,切近似与窗口长度N成反比,N≈,A取决于窗口类型,例如,矩形窗A=4,哈明窗的A=8等。
实现程序如下:
clear all;close all;clc;
wpl=0.4*pi;wph=0.6*pi;wsl=0.2*pi;wsh=0.8*pi;
wd1=(wpl+wsl)/2;wd2=(wph+wsh)/2;
Bt=min(abs(wsl-wpl),abs(wsh-wph));
N=ceil(11*pi/Bt);
wn=[wd1/pi,wd2/pi];
h=fir1(N-1,wn,'bandpass', boxcar (N)); *// h=fir1(N-1,wn,'bandpass',blackman(N));//
*// h=fir1(N-1,wn,'bandpass',hanning(N));//
*// h=fir1(N-1,wn,'bandpass',hamming(N));//
wd=(wd2-wd1)/2;w0=0.5*pi;
M=(N-1)/2;nn=-M:M;n=nn+eps;
hd=2*sin(wd*n).*cos(w0*n)./(pi*n); %理想冲激响应
w= boxcar (N)'; *//w= blackman (N)';//
*//W= hanning(N)';//
*//w= hamming (N)';//
H=20*log10(abs(fft(h,1024))); % 实际滤波器的分贝幅度特性
HH=[H(513:1024) H(1:512)];
subplot(221),stem(nn,hd,'k');
xlabel('n');title('(a)理想冲激响应');axis([-30 30 -0.4 0.5]);
subplot(222),stem(nn,w,'k');axis([-30 30 -0.1 1.2]);
title('(b)矩形窗');xlabel('n'); *// title('(b)布莱克曼窗');xlabel('n');//
*// title('(b)汉宁窗');xlabel('n');//
*// title('(b)哈明窗');xlabel('n');//
subplot(223),stem(nn,h,'k');
axis([-30 30 -0.4 0.5]);xlabel('n');title('(c)实际冲激响应');
w=(-512:511)/511;
subplot(224),plot(w,HH,'k');
axis([-1.2 1.2 -140 20]);xlabel('\omega/\pi');title('(d)滤波器分贝幅度特性');
set(gcf,'color','w');
图8为选用矩形窗窗设计带通滤波器的仿真结果图。图8(a)表示所要设计的滤波器的冲激响应图,图8(b)为所选用的窗函数——矩形窗。图8(c)为加窗后的实际冲击响应。图8(d)为设计得到的带通滤波器的幅度损耗函数图。由图可以看出,所设计的滤波器具有良好的带通滤波特性,满足设计任务要求。
矩形窗属于时间变量的零次幂窗。矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。
图9带通滤波器仿真图(布莱克曼窗)图9为选用布莱克曼窗设计带通滤波器的仿真结果图。图9(a)表示所要设计的滤波器的冲激响应图,图9(b)为所选用的窗函数——布莱克曼窗。图9(c)为加窗后的实际冲击响应。图9(d)为设计得到的带通滤波器的幅度损耗函数图。由图可以看出,所设计的滤波器具有良好的带通滤波特性,满足设计任务要求。
布莱克曼窗增加一个二次谐波余弦分量,可进一步降低旁瓣,但主瓣宽度进一步增加,增加N可减少过渡带。布莱克曼窗设计的阻带最小衰减最大,达-74dB,但过渡带最宽,约为矩形窗的三倍。
图10为选用汉宁窗设计带通滤波器的仿真结果图。图10(a)表示所要设计的滤波器的冲激响应图,图10(b)为所选用的窗函数——汉宁窗。图10(c)为加窗后的实际冲击响应。图10(d)为设计得到的带通滤波器的幅度损耗函数图。由图可以看出,所设计的滤波器具有良好的带通滤波特性,满足设计任务要求。
汉宁窗主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗.但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。
图11为选用哈明窗设计带通滤波器的仿真结果图。图11(a)表示所要设计的滤波器的冲激响应图,图11(b)为所选用的窗函数——哈明窗。图9(c)为加窗后的实际冲击响应。图11(d)为设计得到的带通滤波器的幅度损耗函数图。由图可以看出,所设计的滤波器具有良好的带通滤波特性,满足设计任务要求。
哈明窗是对汉宁窗的改进,只是加权系数不同。哈明窗加权的系数能使旁瓣达到更小。在主瓣宽度(对应第一零点的宽度)相同的情况下,旁瓣进一步减小,可使99.96%的能量集中在主瓣内。
本文首先介绍了数字滤波器的研究背景及其发展现状,然后介绍了FIR数字滤波器的设计原理。在理解设计方法的基础上,最后基于MATLAB软件利用窗函数法实现了FIR数字带通滤波器的设计。仿真结果表明,所设计的滤波器具有良好的滤波器特性,所设计的指标符合设计任务要求。
FIR数字滤波器的设计要取得好的逼近效果,除阶数N外,选择适合的窗函数也是重要方面的。通过对窗函数合理的选择,使得滤波器的通带衰减较小,阻带衰减较大;有较陡的过渡带,有利于对信号频带的选择。
在FIR滤波器中突出的性能中,也存在着一些不足:
1. 窗函数设计法是从时域出发的一种设计法,但一般技术指标是在频率给出的,其边界频率不容易控制,为达到较好的效果,需要多次调试。
2. 由于FIR滤波器的传输函数的极点固定在原点,所以只能采用较高的阶数来达到高的选择性。因此,它的经济性就相对差一些。
MATLAB由于本身带有多种工具箱和窗函数对于滤波器的设计有着多种设计方式,只需修改关键程序即可实现多种滤波器的设计。在图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域有着不可替代应用前进。