android - 即使应用恒定音调,FFT 频率桶幅度也会变化
问题描述
我正在尝试使用 FFT 来解码莫尔斯电码,但我发现当我检查我感兴趣的结果频率箱/桶时,即使呈现恒定音调,绝对值也会发生很大变化。这使我无法使用阈值附近的上升和下降来解码音频莫尔斯。我什至尝试过似乎到处都在复制的简单示例,但它也有所不同……我无法弄清楚我做错了什么,而且我的数学还不够聪明,无法理解与 FFT 相关的所有公式. 我现在必须有可能,但我不知道如何......有人可以帮忙吗?
解决方案
确保您使用的是 FFT 结果的幅度,而不仅仅是复数结果的实部或虚部。
通常,当将较长的恒定幅度正弦波馈送到一系列较短的 FFT(加窗 STFT)时,只有当正弦波的周期在 FFT 长度上是整数周期时,幅度结果才会是恒定的。例如
f_tone modulo (f_sampling_rate / FFT_length) == 0
如果您只对一个选定音调频率的幅度感兴趣,则 Goertzel 算法将用作比完整 FFT 更有效的滤波器。而且,根据您选择的 FFT 库所需的设置和长度限制,改变 Goertzel 的长度以匹配您的目标音调频率的要求以及所需的时间/频率分辨率权衡可能会更容易。
推荐阅读
- r - 以逐行方式应用阈值,其中截止值相对于行的 sd
- javascript - 如何将特定 URL 重定向到 NuxtJs 应用程序中的另一个 URL
- python - PyCharm 在创建 Anaconda 环境时“权限被拒绝”
- python - 将函数应用于列,其中函数的输出是元组
- linux - __buildin_expect 和 if 条件行为
- javascript - flatlist 和 scrollView 无法正常工作
- .net - 如何使用逻辑运算符“或”在 .Net Core 的 dynamobo 表中使用多个条件查询表
- python - Pandas:向其他数据集添加多个唯一值(如图所示):
- php - 下载文件未下载预期文件
- regex - 在创建正则表达式来过滤路径时遇到问题