我愿意对时间序列数据应用傅里叶变换,将其转换为频域数据。我不确定我使用的傅里叶变换方法是否正确?下面是我使用的数据链接。
读取数据文件后,我使用以下代码绘制原始数据:
读取数据文件后,我使用以下代码绘制原始数据:
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*24*60*60
进行了55天的计算。
接下来,我使用以下代码实现了傅里叶变换,并获得了以下图像:
#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()
我有以下问题:
我不确定我上述的傅里叶变换实现方法是否正确。
我不确定我用于避免混叠的方法是否正确。
如果我的做法是正确的,那么如何解释频域图中的三个峰值。
最后,如何使用只有显著频率的信号进行反向变换。