首页 > 解决方案 > 即使应用恒定音调,FFT 频率桶幅度也会变化

问题描述

我正在尝试使用 FFT 来解码莫尔斯电码,但我发现当我检查我感兴趣的结果频率箱/桶时,即使呈现恒定音调,绝对值也会发生很大变化。这使我无法使用阈值附近的上升和下降来解码音频莫尔斯。我什至尝试过似乎到处都在复制的简单示例,但它也有所不同……我无法弄清楚我做错了什么,而且我的数学还不够聪明,无法理解与 FFT 相关的所有公式. 我现在必须有可能,但我不知道如何......有人可以帮忙吗?

标签: androidfft

解决方案


确保您使用的是 FFT 结果的幅度,而不仅仅是复数结果的实部或虚部。

通常,当将较长的恒定幅度正弦波馈送到一系列较短的 FFT(加窗 STFT)时,只有当正弦波的周期在 FFT 长度上是整数周期时,幅度结果才会是恒定的。例如

f_tone modulo (f_sampling_rate / FFT_length) == 0

如果您只对一个选定音调频率的幅度感兴趣,则 Goertzel 算法将用作比完整 FFT 更有效的滤波器。而且,根据您选择的 FFT 库所需的设置和长度限制,改变 Goertzel 的长度以匹配您的目标音调频率的要求以及所需的时间/频率分辨率权衡可能会更容易。


推荐阅读