基于Matlab的FIR数字滤波器的优化设计
2010-12-21
作者:周云波,刘小群
摘要 通过实例介绍了基于Matlab的FIR滤波器的优化设计方法。3种结果比较发现,在同样阶数下,优化设计可以获得最佳的频率特性和衰耗特性。
关键词数字滤波器;Matlab;FIR;IIR;优化设计
数字滤波在数字信号处理中,占有重要的地位。数字滤波包括FIR和IIR两种滤波方式,其中FIR滤波具有很多优点,可以在幅度特性随意设计的同时,保证精确、严格的线性相位,滤波稳定,不会出现递归型结构中的极限振荡等不稳定现象,且误差较小,可采用FFT算法实现,因此运算效率高。设计FIR滤波器常用的方法有窗函数法与频率抽样法,但是这两种方法均不易精确控制通带与阻带的边界频率,所以在实际应用中有一定的局限性。文中用Matlab语言实现了最佳等波纹FIR滤波器的设计,通过比较显示了它在等波纹方脉冲响应方面的优化特性。
1 FIR滤波器优化设计法
Matlab信号工具箱中提供的Remez函数可对数字滤波器进行优化设计,得到的数字滤波器具有等波纹特性,Remez函数实现Parks McClel-lan算法,即采用数字分析中的Remez算法和切比雪夫最佳一致逼近理论来设计,使实际频响拟合期望频率响应最优。使用Remez算法设计滤波器,首先需根据要求确定滤波器阶数。利用Remezord函数可以确定滤波器阶数n,归一化的各频带边界频率fo,归一化的各频带幅度值ao,加权系数w,其格式如下:[n,fo,ao,w]=remezord(f,a,dev)。Remezord输入参数的含义为向量f指定各频带边界频率,在 0~Fs/2之间取值。向量a指定各频带的幅度响应。f的长度是length(f)=2×length(a)-2,必须为偶数。第一频带总是从0开始,最后一个频带到Fs/2结束。向量dev指定设计出的滤波器和理想滤波器的幅度响应在每个频带的最大允许误差,因此与向量a的长度相等。
2 FIR滤波器设计实例
分别使用窗函数法,频率取样,优化设计法,设计一个线性相位的带通滤波器。带通滤波器的通带为1 300~2 210 Hz,阻带O~1 000 Hz,2 410~4 000 Hz,通带最大波动为1 dB,阻带最小衰减为35 dB。设计流程是:(1)输入滤波器技术要求N,Hd(w),W(ω)。(2)按要求的滤波器类型求出W(ω),Hd(w),P(ω)。(3)给出M+2 个交错点组频率初始值ω(i),i=O,1;2,…,M+1。(4)调用Remez算法程序求解最佳极值频率和P(ω)的系数。(5)计算单位脉冲响应 h(n)。(6)输出最佳误差和h(n)。
如图1~图3为3种带通数字滤波器的仿真结果,可以看出在同样阶数下,使用优化设计方法设计的滤波器,无论是通带还是阻带都较平坦、过渡带比较窄且阻带衰减好。
3 结束语
比较3种数字滤波器的设计方法可得以下结论:
(1)采用窗函数法设计简单、方便、实用。但用计算机不易控制边界频率。
(2)由于窗函数法是从时域角度给出的设计方法,但一般情况都是频域角度给出,频率采样法恰好是从频域角度进行设计,比较直观,但边界频率不易控制。增加采样点数N对确定有好处,但采样点数N增大会增加滤波器的成本。
(3)同样阶数下使用优化设计方法所设计的滤波器,无论是通带还是阻带都较平坦、过渡带较窄且阻带衰减好。