逆向iir滤波器的实现

这是一个新的算法,来自一个文档。不同于最广泛应用的block process,还有iir尾部序列抵消(cancellation)的策略。

首先看一个单极点的iir滤波器,其z函数为:

逆向iir滤波器的实现_第1张图片 (1)

其中|c|<1。然后根据高中学的等比序列之和的公式,展开记得到后面的一长串加法,再一变就成了一系列的乘法了,这就说明,对于这个iir滤波器,可以通过延迟(z^(-n)),衰减(c^n),以及旁路(bypass)操作形成的单元滤波器级联而成。每一级滤波器的延迟时间为n=2^N,而且幅度相应衰减。图1画出了对应的框图:

逆向iir滤波器的实现_第2张图片

图 1

由于iir滤波器的冲击响应为无限长度,因此要准确表达iir的精度需要考虑无限多个单元级联项。但是实际上,可以在某个给定的阈值水平上进行iir截断,使得其变成一个FIR。因为每一个单元衰减是指数级的,截断误差可以做到任意小的水平。既然成了FIR滤波器,一切都好说了。FIR 的逆滤波器实现很直接:只要将冲击响应序列反转然后加上一个总的延迟,使得逆滤波器为因果滤波器即可。图1中的IIR结构被截断后,逆滤波器结构为:

逆向iir滤波器的实现_第3张图片

图2 的结构对应的逆滤波器的传输函数为式(2)。式(2)提供了一个稳定的算法,运用一系列的延迟和衰减因子实现了iir 的逆滤波器。

文章后面还有对共轭极点的传输函数的逆滤波实现。

这个方式的优点是,滞后量比block processing的方式少,结构稳定,性能优异。不过说实话,我还没能完全体会这个算法的优点和精髓,sigh。。。以后有机会再来研究吧。

你可能感兴趣的:(滤波器)