python-实际数据的功率谱

时间:2018-11-16 16:09:31

标签: python analysis

我试图显示数据趋势,因此我对数据进行了快速傅立叶变换。但是,正如您在下面的图中所看到的那样,它并不是很有效。产生该图的代码是:

N = 344
T = 16
x = np.array(data_plot_multi_year["x"])
y = np.array(data_plot_multi_year["y"])
yf = scipy.fftpack.fft(y)
xf = numpy.linspace(0, 6000, N) 
plt.plot(xf[1:], np.abs(yf[1:]))
plt.show()

其中data_plot_multi_year的定义如下:

data_plot_multi_year1 = {"x": [], "y": [], "label": []}
        for label, coord in L_B_1_mean.items():
            data_plot_multi_year1["label"].append(label)
            data_plot_multi_year1["x"].append(int(label[:4]) - lowest_year_multi) * 365 + int(label[-3:]))
            data_plot_multi_year1["y"].append(coord)

L_B_1_mean是一个字典,看起来像:

2008130 8.41601085161
2010261 7.24693188673
2005327 8.42464344534
2010149 8.00870105201
2007024 8.21963603414
2007184 7.99993132472
2003226 7.39439113433
2004005 8.3723784148
2017266 7.93883178307
.....

FFT

有人告诉我对相同数据进行功率谱分析。我在这里还阅读了其他一些使用rfftrfftfreq的威胁,但是由于我在不知道从哪里开始之前从未做过类似的事情。

即使这正在绘制一些非常怪异的东西,还是会这样吗?

T = 16
x = np.array(data_plot_multi_year["x"])
y = np.array(data_plot_multi_year["y"])
ps = np.abs(np.fft.fft(y))**2   
freqs = np.fft.fftfreq(y.size, T)
idx = np.argsort(freqs)
plt.plot(freqs[idx], ps[idx])

0 个答案:

没有答案