-1

我目前需要为 Android 应用程序过滤加速度计数据。首先,我使用了一个简单的低通滤波器(简单的无限脉冲响应滤波器)如下:

for i from 1 to n
   y[i] := y[i-1] + α * (x[i] - y[i-1])

这帮助我获得了更流畅的结果。

然后我决定玩 FFT。我使用快速傅立叶变换将信号转换为频域,然后将一些高频归零。然后使用逆傅立叶变换我重新创建了信号。这一切都很好,我知道 FFT 和 IFT 实现很好。但是,信号不如我使用简单的无限脉冲响应滤波器之前得到的信号那么平滑。我尝试将一些进一步的频率归零,但没有给我预期的结果。

这背后的原因是什么?我虽然使用 FFT 和 IFT 在技术上应该给我一个很好的平滑图。这是因为 FFT 中的采样吗?

谢谢

4

1 回答 1

0

问题是您将幽灵归零,它不能完全归零,它需要是频谱中的平滑曲线才能使其保持在时域中。您可能会在声音之上听到某种反馈,那就是时域与频率的突然停止不合作。从数学上讲,您可以在我在wolfram中取值 1 的 fft 中看到它。1 是时域中的无限长函数,它始终为 1。1 的 fft 是狄拉克 delta 函数 sqrt(2*pi),与频带中的无限停止相同。如您所见,当频率无限短时,时域无限长。这就是为什么您不能完全停止您创建的过滤器。

如果您想了解更多理论,我建议您阅读数字滤波器设计。一个快速的解决方法是在您试图消除的频率上接受一些 db 输出。有点像这里的图片

于 2013-06-08T15:24:54.363 回答