FIR数字滤波器的设计与实现
摘 要:简要介绍了FIR滤波器的设计基础和利用窗函数设计FIR滤波器的方法,运用MATLAB语言实现了低通FIR滤波器的设计仿真。
关键词:MATLAB;FIR滤波器;窗函数设计
1 MATLAB简介
MATLAB是"矩阵实验室"(MATrix LABoratoy)的缩写,它是由美国Mathworks公司于1984年正式推出的,是一种以矩阵运算为基础的交互式程序语言,专门针对科学、工程计算及绘图的需求[1]。随着版本的不断升级,内容不断扩充,功能更加强大,从而被广泛应用于仿真技术、自动控制和数字信号处理等领域。全球现有超过五十万的企业用户和上千万的个人用户,广泛分布在航空航天、金融财务、机械化工、电信、教育等各个行业[2]。
2 数字滤波器简介
滤波器的种类很多,从功能上可以分为低通、高通、带通和带阻滤波器,上述每种滤波器又可以分为模拟滤波器和数字滤波器。如果滤波器的输入输出都是数字信号,则这样的滤波器称之为数字滤波器,它通常通过一定的运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分来实现滤波。根据数字滤波器冲激响应的时域特性,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器[3]。有数字信号处理的一般理论可知,IIR滤波器的特征是具有无限持续时间的冲激响应,而FIR滤波器使冲激响应只能持续一定的时间。
3 数字滤波器的设计步骤
3.1确定指标。在设计一个滤波器之前,必须首先确定一些技术指标。这些技术指标需要来制定。在很多实际应用中,例如语音或音频信号处理中,数字滤波器常用来实现选频操作。因此,指标的形式一般确定为频域中幅度和相位的响应。
3.2逼近。确定了滤波器的技术指标后,就可以利用数学和DSP的基本原理提出一个滤波器模型来逼近给定的目标。这一步是滤波器设计的所要研究的主要问题,是整个设计过程的重中之重。
3.3硬件或软件实现。上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器,根据这个描述就可以用硬件或在计算机上用软件实现。
4 窗函数设计法
4.1 窗函数的理论根据。窗函数设计滤波器的基本思想,就是根据给定的滤波器技术指标,选择滤波器的阶数N和合适的窗函数ω(n)。即用一个有限长度的窗口函数序列ω(n)来截取一个无限长的序列hd(n)获得一个有限长序列h(n),即h(n)=w(n)*hd(n),并且要满足以下两个条件:(1)窗谱主瓣尽可能地窄,以获得较陡的过渡带;(2)尽量减少窗谱的最大旁瓣的相对幅度,也就是能量尽量集中于主瓣,使峰肩和纹波减小,就可增多阻带的衰减。这就给窗函数序列的形状和长度选择提出了严格的要求。
4.2用窗函数设计FIR滤波器的步骤
(1)根据技术要求确定待求滤波器的单位取样响应hd(n)。如果给出待求滤波器的频响为Hd(ejw),那么单位取样响应应用下式求出:
hd(n)=■■Hd(ejw)ejwndw(1)
如果Hd(ejw)较为复杂,或者不能用封闭公式Hd(ejw)表示时,则不能用上式求出hd(n)。我们可以对Hd(ejw)从w=0到w=2π采样M点,采样值为Hd(e■),k=0,1,2,…,M-1并用■代替公式(1)中的dw,公式(1)近似写成:
hM(n)=■■Hd(e■)e■(2)
根据频率采样定理,hM(n)与hd(n)应满足如下关系:hM(n)=■hd(n+rM)
因此,如果M选的较大,可以保证在窗口内hM(n)有效逼近hd(n)。实际计算公式(2),可以用Hd(ejw)的M点采样值,进行M点的IDFT(IFFT)得到。
如果给出通带阻代衰减和边界频率要求,可选用理想滤波器作为逼近函数,从而用理想滤波器的特性作傅里叶逆变换,求出hd(n)。例如,理性低通滤波器如公式(3)所示,
Hd(ejw)=ejwa,w?燮wc0,wc<w?燮π(3)
求出单位取样响应hd(n)如下式:
hd(n)=■
为保证线性相位,取a=(N-1)/2。
(2)根据对过渡带及阻带衰减的要求,选择窗函数的形式,并估计窗口长度N。设待求滤波器的长度用Δw来表示,它近似等于窗函数主瓣宽度。因过渡带Δw近似于窗口长度N成反比,N≈A/Δw,A决定于窗口形式。例如,矩形窗A=4π哈明窗A=8π等。按照过渡带及阻带衰减情况,选择窗函数形式。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣窄的窗函数。
(3)计算滤波器的单位取样响应h(n),h(n)=w(n)*hd(n)。式中w(n)是上面选择好的窗函数。如果要求线性相位,则要求hd(n)和w(n)均对(N-1)/2对称。如要求h(n)对(N-1)/2奇对称,只要保证hd(n)对(N-1)/2奇对称就可以了。
(4)验算技术指标是否满足要求。设计出的滤波器频率响应应用下式计算:H(ejw)=■h(n)e-jwn
计算上式时可用FFT算法。如果H(ejw)不满足要求,根据具体情况重复(2)(3)(4)步,直到满足要求。
- 用频率采样法设计FIR滤波器(10-07)
- 高阶FIR滤波器的计算机设计与FPGA实现(03-13)
- FIR结构IQ串行处理RRC滤波器(04-18)
- 优化FIR数字滤波器的FPGA实现(04-18)
- 基于Matlab的FIR数字滤波器设计(10-07)
- 详解FIR滤波器和IIR滤波器的区别(04-04)