使用 FFT 设计 FIR 滤波器有哪些问题?

信息处理 fft 过滤器 离散信号 卷积
2022-01-18 00:40:13

我试图了解使用具有卷积的滤波器内核从“第一原理”设计的 FIR 滤波器与使用 FFT 以两种方式之一设计的滤波器之间的关系(见下文)。

据我了解,FIR 滤波器的脉冲响应与滤波器的卷积核是一回事。(如果我错了纠正我。)

此外,在我的理解中,FIR 滤波器的脉冲响应的分量频率(即傅立叶变换)与滤波器的频率响应相同。因此,逆傅立叶变换将返回脉冲响应。(再次,如果我错了,请纠正我)。

这使我得出两个结论(忽略相位响应,或假设线性相位响应):

  1. 我应该能够通过“绘制”我想要的频率响应来设计任意频率响应的 FIR 滤波器,采用 IFFT 来获得脉冲响应,并将其用作我的卷积核。

  2. 或者,我应该能够通过获取输入信号的 FFT,乘以我想要的频域中的任意频率响应,并对结果进行 IFFT 来生成输出信号,从而创建一个滤波器。

直觉上,感觉 1 和 2 是等价的,但我不确定我是否能证明这一点。

似乎人们(和 DSP 文献)竭尽全力设计具有预定义响应的 FIR 内核,使用复杂的(对我而言)算法,如 Chebyshev 或 Remez(我扔掉了一些我读过的名字,但没有真正理解它们) .

  • 当每个可能的 FIR 内核都存在 FFT/IFFT 变换时,为什么要这么长?
  • 为什么不简单地绘制您想要的精确频率响应,进行 IFFT,然后您的 FIR 内核(上面的方法 1)?
4个回答

您看到人们设计 FIR 滤波器而不是采用直接方法(如 1 和 2)的一个原因是直接方法通常无法考虑频域中的周期性,以及使用FFT 实现的卷积这一事实是循环卷积

这是什么意思?

假设您有一个信号和一个滤波器脉冲响应(卷积核;你是对的,它们是相同的)x=[1,2,3,4]h=[1,1]

卷积,一个 5 长度的向量。如果您使用 FFT(长度错误,4),那么您得到的答案是造成差异的原因是这两者的线性卷积的结果是长度为5,而循环卷积的结果是FFT长度是什么。y=xh[1,3,5,7,4][3,5,7,5]

如果FFT长度大于等于线性卷积结果的长度,那么两者是一样的。否则,两者是不一样的(除非数据以某种方式合谋使其如此,例如,如果一个信号为零)。

一个问题是处理在使用有限长度 FFT 时环绕的无限长度变换。有限长度频率响应的傅里叶变换是无限长度的脉冲响应或滤波器内核。大多数人希望他们的滤波器在死亡或计算机内存耗尽之前完成,因此需要一些技巧来制作更短的 FIR 滤波器。与“经典”滤波器原型之一相比,仅让无限脉冲响应的尾部环绕 FFT,或将其截短到某个通用长度,可能会为您所需的频率规格产生较差的 FIR 滤波器。

另一个问题是,在任何有限分辨率下,随机“绘制”频率响​​应通常在绘制点之间具有可怕的响应(狂野过冲)。转换为 FIR 滤波器,它会像疯了一样响起。经典滤波器原型设计为具有在采样点之间平滑的频率响应函数。

您的(2)称为快速卷积,如果 FFT 长于数据窗口的长度加上滤波器内核的组合,则通常使用,并且使用适当的重叠添加/保存来处理每个卷积段的开始/结束或窗口(因为 FFT 的长度通常是块状的)。

Re 1):是的,您可以通过“绘制”频率响​​应(幅度和相位)来设计 FIR 滤波器。但是,这往往效率很低:脉冲响应的长度(和滤波器阶数)只是预先- 由您的 FFT 长度决定。如果您选择 128 点 FFT,您将获得 128 个脉冲响应抽头,如果您选择 4096 点 FFT,您将获得 4096 个滤波器抽头。

Re 2):是的,您可以通过频域中的乘法进行过滤,这确实是有效处理大脉冲响应的唯一方法。然而,正如 Peter K 所指出的,频域中的乘法对应于循环卷积。实现线性卷积的最常见方法是“重叠添加”或“重叠保存”算法(很容易用谷歌搜索)。

我不确定我是否理解这里所说的所有内容,但我想为傅里叶变换方法提供案例。

首先,它是一种非常灵活且直接的 FIR 滤波器设计方法。正如您所说,需要做的就是定义幅度和相位响应。但是,如前所述,您确实需要小心如何定义响应。任意响应可能需要非常多的抽头来实现并给出可怕的时域响应。所以要小心你如何定义它。

其次,确实如此,例如 Parks McClellan 方法,对于某些特定要求,可以生成比傅立叶方法更好的滤波器,但它不容易控制抽头数,也不容易定义幅度、相位和阶跃响应方法。

例如,假设您想设计一个特性类似于 10 极点 IIR 贝塞尔的 FIR 滤波器,但您想稍微缩小过渡带(以阶跃响应过冲为代价)。然后傅里叶方法使这个问题很容易解决,大约 22 个抽头,具体取决于过渡带的变窄程度。

如果您想了解傅里叶方法的功能,请尝试这个 FIR 程序 http://www.iowahills.com/5FIRFiltersPage.html(它是免费的)。例如,它可以设计与高斯、贝塞尔、巴特沃斯和逆切比雪夫滤波器等效的 IIR。一般来说,它允许您调整滤波器对几乎任何东西的响应,这是傅立叶方法的强项。不利的一面是,对于某些特定要求,过滤器可能不是最佳选择。