我愿意对时间序列数据应用傅立叶变换以将数据转换为频域。我不确定我用来应用傅立叶变换的方法是否正确?以下是我使用过的数据的链接。
读取数据文件后,我使用绘制了原始数据
t = np.linspace(0,55*24*60*60, 55)
s = df.values
sns.set_style("darkgrid")
plt.ylabel("Amplitude")
plt.xlabel("Time [s]")
plt.plot(t, s)
plt.show()
由于数据是每天的频率,我已经将其转换为秒使用24*60*60
并使用 55 天55*24*60*60
接下来,我使用以下代码实现了傅立叶变换,并获得了如下图像:
#Applying Fourier Transform
fft = fftpack.fft(s)
#Time taken by one complete cycle of wave (seconds)
T = t[1] - t[0]
#Calculating sampling frequency
F = 1/T
N = s.size
#Avoid aliasing by multiplying sampling frequency by 1/2
f = np.linspace(0, 0.5*F, N)
#Convert frequency to mHz
f = f * 1000
#Plotting frequency domain against amplitude
sns.set_style("darkgrid")
plt.ylabel("Amplitude")
plt.xlabel("Frequency [mHz]")
plt.plot(f[:N // 2], np.abs(fft)[:N // 2])
plt.show()
我有以下问题:
我不确定我的上述方法对于实现傅立叶变换是否正确。
我不确定我用来避免混叠的方法是否正确。
如果,我所做的比如何解释频域图中的三个峰值是正确的。
最后,我将如何仅使用重要的频率进行变换。