gpt4 book ai didi

dft - 如何从 DFT 中选择频率

转载 作者:行者123 更新时间:2023-12-02 00:32:48 25 4
gpt4 key购买 nike

假设一个数字序列(波状数据)。然后我执行 DFT(或 FFT)变换。我想要实现的下一步是找到与数据中包含的实际频率相对应的频率。正如我们所知,DFT 输出具有实部和虚部 a[i] 和 b[i]。如果我们查看频谱 (sqrt(a[i]^2+b[i]^2),那么其中的最大值对应于包含在数据中的频率。问题是如何从 DFT 中找到所有频率?当有许多其他峰可能被错误选择时,就会出现问题。

最佳答案

我在写荣誉论文时,在对数据进行光谱分析处理时遇到了类似的问题。

你是对的:要找到主频率,你通常只需要查看 DFT 中复数值的大小。

不幸的是,您几乎必须编写某种智能算法来识别峰值(频率)。该算法的工作方式在很大程度上取决于您的应用程序的 DFT 外观。我的 DFT 都具有相似的特征,因此组合启发式算法并不难。如果您的 DFT 可以采用任何形式,那么您可能会得到很多误报和/或漏报。

我这样做的方法是识别 DFT 中具有高震级(峰)的区域,这些区域被低震级(低谷)包围。您可以将峰谷之间的最小差异(灵敏度)定义为常数乘以数据的标准偏差。此外,您可以说任何低于特定幅度(阈值)的峰值都将被完全忽略,因为它们只是噪声。

当然,只有在数据中定义相对明确的频率时,上述技术才会真正起作用。如果您的 DFT 是高度随机的,那么您需要格外小心地仔细设置灵敏度和阈值。

不要忘记您的数据量级是对称的,因此您只需要查看其中的一半。

一旦您确定了 DFT 中的频率,请不要忘记将其转换为您想要的单位。从内存中,如果您使用时间离散化 dt 采集了 n 个样本,那么如果您在数据点 5 处有一个峰值(例如),其中第一个数据点为 1,则频率为 1/(n*dt) 弧度/时间单位。 (我已经有一段时间没有这样做了,所以这个公式可能会因 Pi 或其他因素而偏离)

关于dft - 如何从 DFT 中选择频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5973221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com