如果快速卷积需要LPF,我如何使用基于FFT的快速卷积来实现LPF?

时间:2011-11-16 18:21:13

标签: android iphone audio signal-processing fft

我是一位经验丰富的软件工程师,拥有一些较小的大学DSP知识。我正在开发智能手机应用程序来处理信号数据,例如来自麦克风(以44100 Hz采样)和加速度计(以32-50 Hz采样)。我的应用程序将是,例如,音高探测器等等。

我想在手机上实现低通滤波器(LPF)以消除混叠频率,特别是对于采样率较低的加速度计。 但是,我在尝试应用fast FFT-based convolution方法时发现了矛盾。我们将不胜感激。

这是我的推理线:

  1. 我正在读取信号,我想使用LPF进行抗锯齿处理(去除混叠频率)。

  2. 为了在我的智能手机上实现LPF,我选择将FIR滤波器(即窗口sinc函数)应用于时域信号。设x [n]为我的信号,f [n]为我的滤波器内核的系数。所以我想在x [n]和f [n]之间进行卷积,其中x [n]的长度为N(通常为512),f [n]的长度为M(通常为256)。

  3. 我在智能手机(Android和iPhone)上实现了简单的1D卷积。该算法是typical nested loop version并以O(N M)运行。智能手机上运行速度太慢,N = 512且M = 256。

  4. 然后我查看了使用FFT的fast convolution algorithm并在O(N lgN)中运行。具体来说,滤波后的信号来自:滤波后的x [n] = IFFT(FFT(x)。* FFT(f)),其中FFT是fft,IFFT是逆FFT,而*。是逐个元素的乘法两个阵列。

  5. 但是,我发现该过程存在矛盾:IFFT( FFT(x)。* FFT(f))。这要求我采用x [n]的FFT,但x [n]可能具有混叠频率。这正是我在第1步中的初步问题!

  6. 那么,我该如何解决这个矛盾呢?如果快速卷积内部需要LPF,我如何使用快速卷积来实现LPF?

    注意:一些EE人员告诉我,有些麦克风内置了基于硬件的LPF,但我无法确定智能手机的麦克风或加速度计。

5 个答案:

答案 0 :(得分:4)

简单地说:计算FFT(x)不会引入别名。

每次采样信号时都会引入混叠。我认为你的困惑的根源在于音频信号有两个采样过程:一次采取连续声音并使其成为44.1 kHz信号,然后再次在你要添加的下采样步骤中。

假设30 kHz处有一个假音(例如):它必须被智能手机的硬件拒绝。一旦你有了这些44.1 kHz的样本,就会遇到通过采样器得到的任何别名产品。采样后你不能撤消混叠(这不是严格意义上的,但对于基带信号来说也是如此,这就是你要处理的)。您应该继续并假设手机设计师做到了这一点,您不必担心信号含量高于~20 kHz的别名产品。

这将我们带到第二个采样步骤。在下采样之前,您需要应用另一个抗锯齿过滤器,这是完全正确的。除非先将其衰减,否则任何信号含量低于20 kHz但高于2倍的低采样率将会混叠到输出中。关键是您在下采样之前计算FFT(x),然后应用滤波器,然后进行下采样。这使您可以获得受别名保护的输出。

智能手机很可能有一个delta-sigma ADC,它使用相对柔和的模拟抗混叠滤波器,1或2极,然后以极高的速率(64 * 44.1 kHz或更高)采样,然后应用数字滤波器在其下采样过程中。 MEMS加速度计同样具有内在的抗混叠保护。如果你想测试这个,请使用一个连接到电动振动器(或一个强劲的低音炮锥)的正弦波源,并以几kHz的速度摇动你的手机。您应该看到加速度计信号没有输出。然后以30 kHz的频率驱动一个高音扬声器,看看麦克风是否显示任何内容。

答案 1 :(得分:3)

智能手机上的麦克风总是在采样之前有模拟低通滤波器。如果信号中已经出现混叠,则通常无法移除。因此,每个麦克风的A / D转换器都具有在alalog域中实现的低通滤波 - 甚至在离散化之前也是如此。除非您自己以某种方式对信号进行下采样或重采样,否则您不必担心别名。快速卷积和时域离散循环卷积在数学上是等价的,因此如果另一个没有混叠,则没有理由让别人拥有别名。

答案 2 :(得分:1)

低通滤波器必须放在之前,即它必须是某种模拟电路。您无法从采样信号中删除别名,因为您不知道采样信号的哪一部分是由于混叠造成的,这就是为什么混叠是一个问题的全部要点。

答案 3 :(得分:0)

基于FFT的卷积是一种优化,适用于需要低通滤波频率低于采样前抗混叠所需的低通滤波器的低通滤波器。例如2个低通滤波器,一个用硬件,一个用软件。这通常是在2个低通滤波器可以比采样器之前的一个硬件滤波器更好或更便宜地创建给定滤波器质量(通带平坦度等)时,或者如果采样器本身在所需光谱中引入噪声(大多数)时通常会这样做信号。

答案 4 :(得分:0)

没有矛盾。 X频率很高。 Y = X*F不再有高频,因为F过滤掉了它们(即,将它们相乘)。