近期在学习滤波器设计与实现, 发现网络上大多数使用Matlab等平台进行设计,只需输入性能指标即可输出滤波器系数(coefficients),未提及设计过程的底层实现.故在此总结一下自己学习到的底层实现原理与参考公式.
1.FIR 滤波器 vs IIR 滤波器
**FIR**** | **IIR**** | |
稳定性: | 滤波器一定稳定(传递函数只有零点) | 可能不稳定(传函有零极点) |
实现性: | 滤波器一定可实现 | 有时可能无法实现 |
对原始信号的影响: | 产生线性相位偏移 | 产生非线性相位偏移 |
滤波器长度: | 实现相同的性能时,FIR滤波器通常街结构更长 | 同性能结构短 |
嵌入式实现方法: | 卷积 | 差分方程 |
FIR滤波器的主要缺点是, 实现相同性能指标时,滤波器系数长度高于IIR, 但FIR由于其线性相位偏移的特点, 可以通过相位补偿, 让滤波后原信号相位几乎不变,因此适用于一些对相位要求高的工况下(数据传输,高质量音频等);
2.FIR滤波器系数特点
如Seciton1中所说, FIR滤波器具有线性相位响应, 即FIR滤波器在特定条件下是一个关于角频率的线性方程. 例如:
![](https://i-blog.csdnimg.cn/blog_migrate/2698718f64dd0d06fd851dcf4963b793.png)
即一个FIR滤波器在其通带频率内的频域响应,其相位为关于角频率的线性方程, 此处的条件为, 滤波器的系数为 symmetric 或 antisymmetric, 以及满足公式(2), 其中N为滤波器系数长度, 若滤波器系数满足公式(3)或则称其为symmetric ,满足公式(4)则称其为 antisymmetric
![](https://i-blog.csdnimg.cn/blog_migrate/3808bd2c0cef4fffab066864ae3fbc95.png)
故对于不同对称性以及不同长度(奇数/偶数长度)系数的FIR 滤波器, 可分为以下四类:
*Type 1 FIR filters* : symmetric, odd length
*Type 2 FIR filters* : symmetric, even length
*Type 3 FIR filters* : antisymmetric, odd length
*Type 4 FIR filters* : antisymmetric, odd length
以上这四种滤波器各有特点, 除******Type 1 FIR filters*** 外, 不是都能实现低通,高通,带通,带阻的设计. 故本文将基于1型 FIR进行设计.
3. 理想FIR冲击响应系数
对于理想滤波器, ,采用直接截断方式(即矩形窗方式)的四种典型滤波类型冲击响应系数计算公式如下:
*Lowpass Filter*
![](https://i-blog.csdnimg.cn/blog_migrate/5b41693a0c80797ab85a563f977c2558.png)
Fig1.理想低通滤波器频率响应
![](https://i-blog.csdnimg.cn/blog_migrate/924e7c0d06f4da96f5d89582e8a7b63e.png)
可改写为:
![](https://i-blog.csdnimg.cn/blog_migrate/7c145403cabd6d9787a38bb5ec69322a.png)
*Highpass Filter*
![](https://i-blog.csdnimg.cn/blog_migrate/ba3766e7ad43c42e7a5e00d35f23092c.png)
Fig2.理想高通滤波器频率响应
![](https://i-blog.csdnimg.cn/blog_migrate/6d99eee1a1dee021d718a3d9e22eefb6.png)
可改写为:
![](https://i-blog.csdnimg.cn/blog_migrate/ec93c55eba0e5e68644fda9aced0b786.png)
*Bandpass Filter*
![](https://i-blog.csdnimg.cn/blog_migrate/69e0e414f5709a722b873d10cd786fab.png)
Fig3.理想带通滤波器频率响应
![](https://i-blog.csdnimg.cn/blog_migrate/2a03e5dfd8d9375b0f1af1850e3b9cae.png)
可改写为
![](https://i-blog.csdnimg.cn/blog_migrate/e78d6f7e622431a260058a01ae34af53.png)
*Bandstop Filter*
![](https://i-blog.csdnimg.cn/blog_migrate/76030853539e0e54da659c46b0122e74.png)
Fig4.理想带阻滤波器频率响应
![](https://i-blog.csdnimg.cn/blog_migrate/12a6e2ca558098afd296e39389ebdf5a.png)
可改写为
![](https://i-blog.csdnimg.cn/blog_migrate/820dbfb1fd20e5bf7c544129ad35a84f.png)
有了以上内容, 我们便可以尝试去求解理想FIR滤波器系数
**4. 应用实例-理想低通FIR滤波器****
求解一个理想低通FIR滤波器的冲击响应系数, 性能要求如下:
滤波器长度:
过渡带起始频率:
过度带终止频率:
采样频率:
求解思路:
求解理想滤波器的截至频率(Cut-off frequency)
= 1.0996 rad/sec
由滤波器长度及公式(2)可得
由公式(6)可得滤波器系数如下:
![](https://i-blog.csdnimg.cn/blog_migrate/ef488e659c47f96c4f8a1a4a9ac8f6bc.png)
我们在Matlab中验证一下设计的滤波器
h = [-0.03183
-0.01606
0.02339
0.04491
0.01639
-0.04502
-0.07568
-0.01660
0.12876
0.28362
0.35
0.28362
0.12876
-0.01660
-0.07568
-0.04502
0.01639
0.04491
0.02339
-0.01606
-0.03183];
freqz(h,1);
![](https://i-blog.csdnimg.cn/blog_migrate/51cb3a955a485abd9f9478482bb45869.png)
此处横坐标为归一化频率, 可看到,过渡带的开始频率
过渡带截至频率
满足设计要求的性能指标,
观察一下: 旁瓣衰减为-20db以下; 即对于频率高于 的信号,其幅值衰减为原始幅值的10倍以下