Mic*_*ael 17 algorithm fft c#-3.0
我有一个数据集(一个数组),我需要在其中找到周期性.我该怎么办?有人说我可以使用FFT,但我不确定它会如何给我周期性.非常感谢您的帮助!
tom*_*m10 14
对于此任务,最好使用自相关.
FFT是用于查找周期性的错误工具.
例如,考虑一种情况,即通过将两个简单的正弦波相加来制作波形,一个周期为2秒(0.5 Hz),另一个周期为3秒(0.333 Hz).该波形的周期为6秒(即2*3),但傅立叶频谱仅在.5 Hz和.333 Hz处显示两个峰值.
周期性是一个没有明确定义的术语。例如这样的数据:
1, 10, 1, 10, 1, 11, 1, 10, 1, 10, 1, 11, 1, 10, 1, 10, 1, 11
您可以将其视为不精确但强周期性 2 的 1,以及精确周期 6 的周期。
对于精确的周期性,您可以简单地尝试将给定数据作为重复两次的数据子串来查找。
对于真实、噪声信号的非精确周期性,可以使用时域和频域方法。
时域一是自相关。就像上面的子串搜索:搜索数据具有最大自相似性的移位值。
对于简单信号,计算阈值转换可能就足够了。
频域方法包括使用 FFT/FHT 的方法:搜索频率频谱中的最大值,给出 1/T 的周期性。
另一种方法是使用倒谱。
您可以使用 FFT,因为它将您的数据集从值空间转换为频率空间。
这意味着您最终将拥有一组频率,这些频率组成将产生您想要分析的初始输入。然后您可以轻松识别哪些是由特定频率产生的主要贡献,因此您将了解有多少个周期性以及哪些是最有影响力的。
看看这里: http: //local.wasp.uwa.edu.au/~pbourke/miscellaneous/dft/