【问题标题】:Extract only high frequency from FFT从 FFT 中仅提取高频
【发布时间】:2014-03-22 10:22:44
【问题描述】:

我正在尝试在智能手机上进行 FFT 并提取高频特征。事实证明,在智能手机上对 44100HZ 采样数据进行完整 FFT 太慢,但由于奈奎斯特定理,下采样会杀死高频信息。有没有办法在保持较高频率的同时加快 FFT?

【问题讨论】:

  • 原生 ARM 代码中的 FFT(在 Android 上使用 NDK)应该能够轻松地跟上大多数当前智能手​​机上 44.1kHz 的采样率,并且只使用一小部分 CPU。
  • 您使用的分段大小是多少?您是否将重叠添加用于过滤器实现?对于较短的高通滤波器,您也可以直接实现卷积。
  • 即使在纯 Java 中,你也应该能够跟上,除非你的窗口很大。
  • 如果您要过滤,请完全避免 FFT 并进行时域过滤。

标签: android signal-processing fft


【解决方案1】:

不清楚是要使用 FFT 信息还是只是实现某种过滤器的一种方式。

对于第一种情况,您可以对数据进行二次采样,即运行高通滤波器,然后压缩(下采样)序列。是的,会有混叠,但您仍然可以将 FFT 中的特定频率映射回原始的较高频率。

如果它正在过滤,那么在您从应用基于转换的过滤中获得任何好处之前,过滤器应该是合理的。此外,如果您这样做,请确保您阅读了重叠添加和重叠保存过滤,并且不要使用所有常见的“让我们采用 FFT,乘以‘理想’响应,然后乘以 IFFT”。这通常不会给出预期的结果(除非您期望传递函数随时间变化且与“理想”不同)。

【讨论】:

    猜你喜欢
    • 2018-08-17
    • 2013-01-13
    • 2013-04-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2023-03-19
    • 2011-07-16
    相关资源
    最近更新 更多