如何从一维离散小波变换中获得特定的频带系数?

时间:2019-03-07 17:43:22

标签: python signal-processing wavelet pywavelets

我需要从30s窗口中将信号的频谱信息汇总到频谱带中。 Delta(1-4hz),Theta(5-8hz),Alpha(9-12hz)等。当使用连续小波变换(cwt)时,我将获得对应于特定频率的系数,我可以对其进行总结以获得平均功率每个乐队。

离散小波变换(dwt)会返回“近似值”和“细节”。我不明白如何将这些系数映射到我的光谱带。我知道随着级别数的增加,频率分辨率也会提高,因此,如果我的采样率为512,则应按如下所示映射系数。

Detail lvl 1: 256hz - 512hz
Detail lvl 2: 128hz - 256hz
Detail lvl 3:  64hz - 128hz
Detail lvl 4:  32hz -  64hz
Detail lvl 5:  16hz -  32hz
Detail lvl 6:   8hz -  16hz
Detail lvl 7:   4hz -   8hz
Approx lvl 7:   0hz -   4hz

我可以总结这些频带中任何一个的近似系数或细节系数,但是如果我需要像6hz - 20hz这样的特定频带怎么办?如果我知道什么系数对应什么频率,我可以快速地将其映射。

我在python中使用PyWavelets,我的cwt代码在下面

scale = np.arange(1, 150)
f = pwt.scale2frequency(wavelet='more', scale=scale) * 512
coefficients, frees = pewit.cwt(sig, f, 'morl')
delta = np.mean(amp[1:5, :])
theta = np.mean(amp[5:9, :])
...

我认为Daubechies小波是最接近Morlet的离散小波。

0 个答案:

没有答案