【发布时间】:2016-08-26 09:22:20
【问题描述】:
我有一个 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)
频谱:
功率谱:
既然我知道信号在频率 1 和 2 处最强,我想创建一个滤波器(非 boxcar),它可以平滑数据以保留这些主要频率。
是否有特定的 numpy 或 scipy 函数可以做到这一点?这将是必须在主包之外创建的东西吗?
【问题讨论】:
-
在频域中乘以适当宽度和位置的高斯以隔离感兴趣的频率,然后 IFFT 回到时域。
标签: python numpy scipy filtering fft