gpt4 book ai didi

algorithm - 如何使用 FFT 计算数据频率?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:31:25 24 4
gpt4 key购买 nike

我想知道数据的频率。我有一点点想法可以使用 FFT 来完成,但我不确定该怎么做。一旦我将整个数据传递给 FFT,它就会给我 2 个峰值,但我怎样才能获得频率?

非常感谢。

最佳答案

您可能正在寻找以下内容:

当您谈到计算信号的频率时,您可能对分量正弦波不太感兴趣。这就是 FFT 给你的。例如,如果对 sin(2*pi*10x)+sin(2*pi*15x)+sin(2*pi*20x)+sin(2*pi*25x) 求和,您可能想要检测“频率"为 5(看看这个函数的图形)。但是,此信号的 FFT 将检测频率 5 的 0 幅度。

您可能更感兴趣的是信号的周期性。也就是说,信号变得最像它自己的时间间隔。所以很可能您想要的是自相关。查一下。这基本上可以衡量信号在偏移一定量后与自身的自相似程度。因此,如果您在自相关中发现峰值,则表明信号在移动超过该量时与自身匹配良好。它背后有很多很酷的数学原理,如果您有兴趣,请查阅它,但如果您只是想让它起作用,只需这样做:

  1. 使用平滑窗口(余弦就可以了。窗口应该至少是您要检测的最大周期的两倍大。3 倍大会得到更好的结果)对信号进行窗口化。 (如果您感到困惑,请参阅 http://zone.ni.com/devzone/cda/tut/p/id/4844)。

  2. 进行 FFT(但是,确保 FFT 的大小是窗口的两倍,后半部分用零填充。如果 FFT 的大小只是窗口的大小,您将有效地采用循环自相关,这不是您想要的。请参阅 https://en.wikipedia.org/wiki/Discrete_Fourier_transform#Circular_convolution_theorem_and_cross-correlation_theorem )

  3. 将 FFT 的所有系数替换为其平方值 (real^2+imag^2)。这实际上是在进行自相关。

  4. 参加 iFFT

  5. 找到 iFFT 中的最大峰值。这是波形的最强周期性。实际上,您可以更聪明地选择哪个峰,但对于大多数用途而言,这应该足够了。要找到频率,您只需取 f=1/T。

关于algorithm - 如何使用 FFT 计算数据频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4225432/

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