小波包将原始信号逐级向下分解。图1为用MATLAB绘制的小波包分解树,分解层数为3层。树中节点的命名规则如下:从(1,0)开始,(1,0)为1号,(1,1)是2号,依次类推,(3,0)是7号,(3,7)是14号。每个节点都有对应的小波包系数,此系数决定了频率的大小,即频域信息,节点的顺序决定了时域信息,即频率变化的顺序。

小波分解 python 小波分解层数_高通滤波

图2为信号的时间频率图,x轴表示信号的时间变化,y轴上显示的数字对应于图1中的节点,从下往上依次为7号,8号,10号,9号,13号,14号,12号,11号节点,其顺序是小波包自动排列的。为什么不是按照从小往大的顺序排列呢?这与小波包分解的原理有关。

小波分解 python 小波分解层数_高通滤波_02

以图1中小波包树的三层分解为例,小波包树中左边的节点是对上一节点的低通滤波,右边的节点是对上一节点的高通滤波。从根节点开始,每个节点的信号通过低通滤波和高通滤波之后都需要再进行一个向下采样的过程,即隔几个点采样一次,是一个降低采样率的过程,具体的这里为2倍下采样上,即只保留偶数序号的元素。经过高通滤波之后,下采样前的信号频谱带限于(pi/2,pi)上(负频率部分与此对称)。对这一高频信号进行2倍下采样可以分解为两步:(1)将频谱展宽2倍并且幅度减半;(2)将频谱以2pi为周期进行延拓。这样经过下采样后信号的频谱形状((0,pi)内的部分)恰好左右翻转了,即原先的高频(pi)变为了0,低频(pi/2)变为了高频(pi)。因此,经过小波包分解后,所有经过了高频滤波并下采样的分量的频谱顺序都要翻转一次,即最终的频谱顺序形成格雷码的顺序——从根节点(0,0)开始,自上而下,通过高频滤波器我们就认为是“1”,通过滤波器我们就认为是“0”,将这些二进制码从左到右排列就是000,001,011,010,110,111,101,100,分别对应于节点(3,0),(3,1),(3,3),(3,2),(3,6),(3,7),(3,5),(3,4)。

在这个例子中,信号的采样频率为12000Hz,根据采样定理,奈奎斯特采样频率为6000Hz,分解了3层,最后一层就是个频段,每个频段的区间长度是相同的,都是6000/8=750Hz。图2中8号频段和7号频段颜色最重,说明信号频率集中在这两个频段之间,即750Hz~1500Hz、0-750Hz之间,其次,10号频段即1500Hz-2250Hz上也有部分频率分布,其余频段几乎没有频率分布。因此,经过三层小波包分解,我们可以很明显地看出原信号的频率集中在低频部分,高频信息基本为0。如果分解层数更多,结果更精细。