如何找到DWT信号变换的频带



我是信号处理的新手,我想找出Daubechies小波"db4"变换输出的每个电平的频率范围。转换是用PyWavelets完成的。我在python中工作,下面的代码输出5个细节级别和1个近似值,但我不确定每个级别描述的频率范围。

data = pywt.wavedec(X_train_ch1_raw[0], 'db4', level=5)

您的问题比看上去更棘手。

简单的答案是:使用pywt的scale2freq内置函数返回与给定尺度的给定小波相关的频率。例如,下面的代码返回Daubechies 4小波的频率,标度为5(0.14285714285714285(:

import pywt pywt.scale2frequency('db4',5)

通过计算db4小波的中心频率(0.7142857142857143(,然后除以标度(5(,可以得到相同的结果

import pywt pywt.central_frequency('db4')/5

请注意,这不是信号的实际中心频率!这个量被称为伪频率,因为它与被分析的信号无关。

为了恢复信号的中心频率,您需要将伪频率除以信号的采样率:

import pywt pywt.scale2frequency('db4',5)/dt

其中dt是您的采样率。

我希望这能有所帮助!

PS:我建议绘制重建信号的频谱,以说服自己中心频率与上述分析公式输出的值相匹配。

最新更新