我正在尝试使用 Pywavelets 通过连续小波变换 (CWT) 执行多分辨率分析。我听说 CWT 应该优于 STFT,因为频率内容随时间窗口的变化而变化。
我的测试信号是两个 1Hz 和 5Hz 的正弦波,每个持续 10 秒(见图)f=np.sin(2.*np.pi*t)*((t>=10)&(t<=20))+np.sin(2*np.pi*5*t)*((t>=30)&(t<=40))
:. 采样周期为 20Hz。
使用 Pywavelets,我使用生成的频谱图按如下方式执行 CWT:
scales = np.arange(0.6,65,step=0.2)
coef, freqs=pywt.cwt(f,scales,'cgau1', sampling_period=dT)
如您所见,频率分辨率非常糟糕,第二段的峰值(复数幅度)似乎甚至没有在 5Hz 处对齐。
相比之下,使用标准偏差为 5 的高斯窗口的 STFT 会产生更清晰的频率分辨率(以时间锐度为代价):
我在这里做什么?我愿意牺牲时间分辨率,但我确实需要提高频率。