gpt4 book ai didi

python - 使用 numpy 的傅里叶变换找到时间序列最可能的周期性?

转载 作者:太空狗 更新时间:2023-10-30 00:09:22 25 4
gpt4 key购买 nike

假设我有一个包含一百个测量值的时间序列 t,每个条目代表每天的测量值。我假设信号有一定的周期性——它可能每天、每周或每月重复。

将时间序列转换为傅里叶域可能有助于找到这样的周期性?

我如何使用 numpy 的 fft 模块为我的时间序列找到最可能的周期?

最佳答案

我的目标是回答我自己的问题。您可以在适当的地方纠正我。

假设我们的时间序列 t 是 t = [2,1,0,1,2,3,2,1,0,1,2,3,2,1,0,1,2,3 ] 有 18 个测量值。一个相当简单的例子:周期的长度似乎是六个时间单位。

将这个时间序列带入频域得到我们:

    w = numpy.fft.fft(t)
print numpy.absolute(w)
array([27.000000, 0.000000, 0.000000, 12.000000, 0.000000, 0.000000,
0.000000, 0.000000, 0.000000, 3.000000, 0.000000, 0.000000,
0.000000, 0.000000, 0.000000, 12.000000, 0.000000, 0.000000])

我们忽略频率 0 并观察到索引 3 的值最大——这表明在我们的时间序列 t 内,信号重复 3 次。因此信号的长度——周期——将是 18/3 = 6。事实上:

numpy.fft.fftfreq(18)
array([ 0. , 0.055556, 0.111111, 0.166667, 0.222222, 0.277778,
0.333333, 0.388889, 0.444444, -0.5 , -0.444444, -0.388889,
-0.333333, -0.277778, -0.222222, -0.166667, -0.111111, -0.055556])

索引 3 处的频率恰好是 1/6,即一个时间单位的频率是 1/6,这意味着信号在整个周期内需要六个时间单位。

请让我知道我的理解是否正确。

关于python - 使用 numpy 的傅里叶变换找到时间序列最可能的周期性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44803225/

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