gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:23:12 25 4
gpt4 key购买 nike

我试图从 these set of slides 重现 Watson 的频谱图(PDF 第 30 页,幻灯片的第 29 页),来自 this data of housing building permits .
Watson 获得了非常平滑的频谱曲线,很容易分辨出峰值频率。
当我尝试对数据运行 FFT 时,我得到了一个非常嘈杂的频谱曲线,我想知道是否有我遗漏的中间步骤。
我在 python 上运行了傅立叶分析,使用 scipy 包 fftpack 如下:

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])))
有人可以帮我解决丢失的链接吗?
原始数据为:
original data
下面是沃森的频谱曲线,我试图重现:
target spectrum
这些是我的结果:
my results

最佳答案

贴出的曲线看起来不太现实。但是有很多方法可以使用各种重采样和/或绘图插值来获得具有相似“曲线”量的平滑结果。
我喜欢的一种方法是将数据切成段(窗口,可能重叠),大约比您想要看到的最大“颠簸”数量长 4 倍,也许更长一点。然后在使用更长的(大小大约为您想要的最终绘图的分辨率)零填充 FFT 之前对每个段进行窗口化。然后对多个窗口段的多个 FFT 的结果进行平均。这是有效的,因为零填充 FFT(几乎)等效于最高质量的 Sinc 内插低通滤波器。

关于python - 如何平滑时间序列的频谱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63065675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com