1.根据冲激响应的不同,将数字滤波器分为有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器。对于FIR滤波器,冲激响应在有限时间内衰减为零,其输出仅取决于当前和过去的输入信号值。对于IIR滤波器,冲激响应理论上应会无限持续,其输出不仅取决于当前和过去的输入信号值,也取决于过去的信号输出值。
2.FIR和IIR
FIR滤波器
定义:
FIR滤波器是有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。
特点:
-
FIR滤波器的最主要的特点是没有反馈回路,稳定性强,故不存在不稳定的问题;
-
FIR具有严格的线性相位,幅度特性随意设置的同时,保证精确的线性相位;
-
FIR设计方式是线性的,硬件容易实现;
-
FIR相对IIR滤波器而言,相同性能指标时,阶次较高,对CPU的性能要求较高。
-
IIR滤波器
定义:
IIR滤波器是无限脉冲响应滤波器,又称递归型滤波器,即结构上带有反馈环路。
特点:
-
IIR数字滤波器的系统函数可以写成封闭函数的形式,具有反馈回路;
-
IIR数字滤波器的相位非线性,相位特性不好控制,随截止频率变化而变化,对相位要求较高时,需加相位校准网络;
-
IIR滤波器有历史的输出参与反馈,同FIR相比在相同阶数时取得更好的滤波效果;
-
IIR数字滤波器采用递归型结构,由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。
区别
-
稳定性:由于FIR滤波器没有反馈回路,稳定性要强于IIR;
-
相位特性:FIR 为线性相位延迟,IIR 为非线性相位延迟。
信号处理速度:FIR的滤波输出取决于当前输入数据和历史输入数据,IIR的滤波输出取决于当前输入数据、历史输入数据和历史输出数据。以基于FPGA硬件的数字滤波器为例,FIR在处理信号时不需等待前一个信号的滤波输出,只需要考虑输入数据便可实时滤波;IIR需要等待上一个信号的滤波输出,存在一定的时间延迟,所以处理速度上没有FIR快。
从上面的简单比较可以看到IIR与FIR滤波器各有所长,所以在实际应用时应该从多方面考虑来加以选择。从使用要求上来看,在对相位要求不敏感的场合,如语言通信等,选用IIR较为合适,这样可以充分发挥其经济高效的特点;对于图像信号处理,数据传输等以波形携带信息的系统,则对线性相位要求较高,采用FIR滤波器较好。当然,在实际应用中可能还要考虑更多方面的因素。
3.例子-低通滤波器的设计
FIR的设计:
FIR滤波器的设计比较简单,就是要设计一个数字滤波器去逼近一个理想的低通滤波器。通常这个理想的低通滤波器在频域上是一个矩形窗。根据傅里叶变换我们可以知道,此函数在时域上是一个采样函数。通常此函数的表达式为:
sa(n)=sin(n∩)/n∏,但是这个采样序列是无限的,计算机是无法对它进行计算的。故我们需要对此采样函数进行截断处理,也就是加一个窗函数。也就是把这个时域采样序列去乘一个窗函数,就把这个无限的时域采样序列截成了有限个序列值。但是加窗后对此采样序列的频域也产生了影响:此时的频域便不在是一个理想的矩形窗,而是成了一个有过渡带,阻带有波动的低通滤波器。通常根据所加的窗函数的不同,对采样信号加窗后,在频域所得的低通滤波器的阻带衰减也不同。通常我们就是根据此阻带衰减去选择一个合适的窗函数。如矩形窗、汉宁窗、汉明窗、BLACKMAN窗、凯撒窗等。选择一个具体的窗函数之后,根据所设计滤波器的参数来计算所需的阶数、此窗函数的表达式。然后用这个窗函数去和采样序列相乘,就可以得到实际滤波器的脉冲响应。
IIR的设计(双线性变换法):
IIR的设计理念是这样的:根据所要设计滤波器的参数去确定一个模拟滤波器的传输函数,然后再根据这个传输函数,通过双线性变换、或脉冲响应不变法来进行数字滤波器的设计。它的设计比较复杂,复杂在于它的模拟滤波器传输函数H(s)的确定。这一点我们可以让软件来实现。然后,我们说一下它的具体实现步骤:首先你要先确定你需要一个什么样的滤波器,巴特沃斯型,切比雪夫型,还是其它什么型的滤波器。当你选定一个型号后,你就可以根据设计参数和这个滤波器的计算公式来确定其阶数、传输函数的表达式。通常这个过程中还存在预扭曲的问题(这只是双线性变换法所需要注意的问题,脉冲响应不变法不存在这种问题)。确定H(S)后,就可以通过双线性变换得到其数字域的差分方程。