Python中实现CWT遇困惑:Morlet小波尺度与频率对应问题
关于连续小波变换(CWT)尺度与频率对应关系的疑问
为理解小波变换,我针对10Hz正弦信号应用Morlet小波进行连续小波变换(CWT),但不清楚尺度范围应如何与频率对应。我分别使用三种不同尺度范围(np.arange(1,32)、np.arange(1,64)、np.arange(1,128))测试,得到了不同结果。我原本认为固定频率在尺度图中应对应近乎固定的尺度,对此感到困惑,请问如何正确使用CWT?
测试代码
npnts=500 time=np.linspace(0,1,npnts) signal=np.sin(2*np.pi*10*time) dt=time[2]-time[1] scales =np.arange(1,32) fig,ax=plt.subplots(1,2,figsize=(8,6)) ax[0].plot(time,signal) ax[0].set_ylabel('Intensity (a.u.)') ax[0].set_xlabel('Time(s)') wavelet='morl' coeff, freq = pywt.cwt(signal, scales, wavelet) ax[1].imshow(abs(coeff),extent=[time[0],time[-1],np.min(scales),np.max(scales)],cmap='jet',\ vmax=np.real(coeff).max(),vmin=-abs(coeff).max(),aspect='auto') plt.tight_layout() plt.show()
不同尺度范围的测试结果
- 使用
scales=np.arange(1,32)的结果图 - 使用
scales=np.arange(1,64)的结果图 - 使用
scales=np.arange(1,128)的结果图
内容的提问来源于stack exchange,提问作者behzad nazar
相关产品推荐
相关产品推荐

