滤波器设计(2):经典FIR数字滤波器的设计

来源:互联网 发布:vb在光标位置输入文字 编辑:程序博客网 时间:2024/05/01 04:41

引言


以前有一篇IIR滤波器设计的文章。与IIR相对应,这篇文章主要讲FIR滤波器的设计。

以下一段摘自百度百科。

FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。

详细内容可见FIR滤波器百度词条。

FIR滤波器的优点,一定是稳定的(极点都在0的位置),可以做到线性相位,而IIR的相位是非线性的(摘自郑君里《信号与系统》)。

按奇偶节数、奇偶对称,把实h(n)的FIR分为四类。


从Hg(w)可以看出,有些就不能做低通,有些就不能做高通,等。

其他详细内容,可自行查阅资料。

窗函数法


FIR滤波器设计方法“据说”有很多种。本科上课的时候,就教过一种,窗函数法。
大致意思就是,要设计什么,就用那种对应的理想滤波器去乘以一个窗函数。
假设要设计一个LPF。理想LPF最好理解。但由于xxxx原因,不能物理实现。
上海交大(SJTU)某一年考研题目问的就是“为什么理想LPF物理不可实现”,以及什么是Gibbs(吉布斯)现象。
理想LPF的单位脉冲相应h(n)是无限长的,实际中不可能做到无限长的,所以希望用有限长的h1(n)去逼近h(n),
实现最小均方误差意义下的最优。
有人证明了,把理想的h(n)截断,就可以得到最小均方误差意义下的最优。
截断的意思就是,加矩形窗w(n)。时域相乘,频域就是拿着H(jw)和窗函数的W(jw)卷积。
后来在有些场合下,发现矩形窗不能满足需求,于是有了三角窗、Hanning窗、Hamming窗、Blackman窗、Kaiser窗等。
一个理解就是拿主瓣宽度和旁瓣衰减互换。鱼和熊掌不可兼得。
e.g. 矩形窗,主瓣窄,旁瓣大,过渡带带宽宽,旁瓣衰减不够大。
总之,需要根据需求,选择窗函数。

设计步骤


用maltab设计FIR线性相位滤波器的步骤大致如下。
1. 根据需求,提出指标。
2. 把指标化成数字的。
3. 按照指标,选窗函数。
4. 按过渡带带宽,定阶数。但是,要注意阶数是否满足频率特性。比如,有些线性相位FIR滤波器就不能实现低通……
5. 调用fir1确定系数。
6. 检验其频率响应。又是一个反复试验,反复修正的过程。

注意,千万小心,matlab里,zplane对FIR滤波器,慎用!慎用!不要轻易对FIR的系数求零极点。
阶数很高的时候,电脑要算死的。

窗函数




设计实例




最后一张图中,相频特性进行了解卷绕(unwrap)。可以看出,相位确实是线性的。

FIR与IIR简单的对比


摘自郑君里《信号与系统》。







0 0