我已经分析了一个每小时3小时的温度数据的时间序列,并发现了使用傅里叶分析的功率谱。
data = np.genfromtxt('H:/RData/3hr_obs.txt',
skip_header=3)
step = data[:,0]
t = data[:,1]
y = data[:,2]
freq = 0.125
yps = np.abs(np.fft.fft(y))**2
yfreqs = np.fft.fftfreq(y.size, freq)
y_idx = np.argsort(yfreqs)
fig = plt.figure(figsize=(14,10))
ax = fig.add_subplot(111)
ax.semilogy(yfreqs[y_idx],yps[y_idx])
ax.set_ylim(1e-3,1e8)
Run Code Online (Sandbox Code Playgroud)
频谱:
功率谱:
既然我知道信号在1和2频率处最强,我想创建一个滤波器(非棚车),该滤波器可以使数据平滑以保持那些主导频率。
是否有特定的numpy或scipy函数可以做到这一点?这将是必须在主软件包之外创建的东西吗?