我有时间关联数据,我想要执行傅里叶变换。数据位于http://pastebin.com/2i0UGJW9。问题是数据的间隔不均匀。为了解决这个问题,我试图对数据进行插值,然后执行快速傅里叶变换。
import numpy as np
from scipy.fftpack import fft, fftfreq, fftshift
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
x = np.linspace(min(times), max(times), len(times))
y = interp1d(times, data)(x)
yf = fft(y)
xf = fftfreq(len(times), (max(times)-min(times))/len(times))
xf = fftshift(xf)
yplot = fftshift(yf)
plt.figure()
plt.plot(xf, 1.0/len(times) * np.abs(yplot))
plt.grid()
plt.show()
然而,这会给出一个以零为中心而不是预期频率图的尖峰。如何才能得到准确的结果?