Mar*_*cel 7 python numpy fft periodicity
假设我有一个时间序列t,其中有100次测量,每个条目代表每天的测量值。我假设信号中存在一些周期性-可能每天,每周或每月重复一次。
将时间序列转换为傅立叶域可能有助于找到这样的周期性?
如何使用numpy的fft模块查找时间序列中最可能的时间段?
我将致力于回答我自己的问题。你可以在适当的时候纠正我。
假设我们的时间序列 tt = [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])
Run Code Online (Sandbox Code Playgroud)
我们忽略频率 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])
Run Code Online (Sandbox Code Playgroud)
索引 3 处的频率正好是 1/6,即一个时间单位的频率是 1/6,这意味着信号在整个周期内需要六个时间单位。
请让我知道我的理解是否正确。
| 归档时间: |
|
| 查看次数: |
4119 次 |
| 最近记录: |