首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何平滑时间序列的频谱?

如何平滑时间序列的频谱?
EN

Stack Overflow用户
提问于 2020-07-24 10:03:23
回答 1查看 214关注 0票数 2

我试图从来自this data of housing building permitsthese set of slides (PDF p.30,幻灯片的第29页)中复制沃森的谱图。

Watson实现了一条非常平滑的频谱曲线,很容易分辨出峰值频率。当我试图对数据运行FFT时,我得到了一个非常嘈杂的频谱曲线,我想知道是否有中间步骤我遗漏了。

我使用scipy包fftpack在python上运行了傅立叶分析,如下所示:

代码语言:javascript
复制
from scipy import fftpack

fs = 1 / 12 # monthly
N = data.shape[0]
spectrum = fftpack.fft(data.PERMITNSA.values)
freqs = fftpack.fftfreq(len(spectrum)) #* fs

plt.plot(freqs[:N//2], 20 * np.log10(np.abs(spectrum[:N//2])))

有人能帮我补上缺失的那一环吗?

原始数据为:

下面是Watson的频谱曲线,这是我试图重现的曲线:

下面是我的结果:

EN

回答 1

Stack Overflow用户

发布于 2020-07-27 01:34:12

发布的曲线看起来不真实。但有许多方法可以获得具有类似“曲率”的平滑结果,使用各种重采样和/或绘图插值。

我喜欢的一种方法是将数据切成多个段(窗口,可能是重叠的),大约比你想看到的最大“凹凸”数长4倍,也许更长一点。然后在使用更长的(大小约为您想要的最终绘图的分辨率)填充零的FFT之前对每个线段进行窗口。然后对多个窗口化分段的多个FFT的结果进行平均。这是因为填充零的FFT (几乎)等同于最高质量的正弦插值低通滤波器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63065675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档