小波包变换的入门
http://blog.sina.com.cn/s/blog_8fc890a20101ecn7.html
最近用到小波方面的知识,尤其是小波包变换。
小波包变换的优势:(大部分书上 网上都有,我就简单摘了点过来)
由于正交小波变换只对信号的低频部分做进一步分解,而对高频部分也即信号的细节部分不再继续分解,所以小波变换能够很好地表征一大类以低频信息为主要成分的信号,但它不能很好地分解和表示包含大量细节信息(细小边缘或纹理)的信号,如非平稳机械振动信号、遥感图象、地震信号和生物医学信号等。与之不同的是,小波包变换可以对高频部分提供更精细的分解,而且这种分解既无冗余,也无疏漏,所以对包含大量中、高频信息的信号能够进行更好的时频局部化分析。
研究了两天,发现如果从头开始研究需要的时间太长,而且如果想真正弄懂小波,还需要了解泛函的知识并且硬着头皮去看那些枯燥的公式。由于我们科研只要明白个大概,能够找到合适的工具来使用,就可以了。因为之前我弄懂傅里叶变换的时候,也是从先会用再到逐渐深入理解的,所以这次我还是先从会用开始。研究了两天之后,发现我小波变换没弄懂什么,小波包先会用了。由于我痛苦的搜了整个网,慢慢理解了一些东西,所以把有用的几个部分拿过来,结合MATLAB,给和我一样想入门的同学一个参考。
首先,小波包的一些基本的基本要弄懂,就是小波包是从原始信号,分级向下分解。如下图所示。
这就是小波包树,其中节点的命名规则是从 (1,0)开始,叫1号, (1,1)是2号,,,,依此类推,(3,0)是7号,(3,7)是14号。 每个节点都有对应的小波包系数,这个系数决定了频率的大小,也就是说频率信息已经有了,但是时域信息在哪里呢? 那就是 order。 这个order就是这些节点的顺序,也就是频率的顺序。
比如,节点的排序是 1,2,3,,,,14, 那么频率就按先1号的频率变化,后2号的,再3号的,,,然后14号的。
图1
来看一个实例:
采样频率为1024Hz,采样时间是1秒,有一个信号s是由频率100和200Hz的正弦波混合的,我们用小波包来分解。
clear all
clc
fs=1024; %采样频率
f1=100; %信号的第一个频率
f2=300; %信号第二个频率
t=0:1/fs:1;
s=sin(2*pi*f1*t)+sin(2*pi*f2*t); %生成混合信号
[tt]=wpdec(s,3,'dmey'); %小波包分解,3代表分解3层,像图1那样,'dmey'使用meyr小波
plot(tt) %这个就是画出图1那个图,可以用鼠标在上面点
wpviewcf(tt,1); %画出时间频率图,如图2
图2
现在开始解释:x轴很简单,就是1024个点,对应1秒,每个点就代表1/1024秒,x轴诡异一下,最后一个数就是1. y轴上显示的数字对应于 图1 中的节点,从下面开始,顺序是 7号节点,8号,10号,9号,,,,11号节点,这个顺序是这么排列的,这是小波包自动排列的,不用管。只要知道怎么查看这个order就可以了。然后,y轴是频率啊,怎么不是 100Hz和300Hz呢? 原因就是MATLAB这里没有显示频率,显示的是order,频率我们要自己算,怎么算呢。我们的采样频率是1024Hz,根据采样定理,奈奎斯特采样频率是512Hz,我们分解了3层,最后一层就是 2^3=8个频率段,每个频率段的频率区间是 512/8=64Hz,对吧,那看图2,颜色重的地方一个是在8那里,一个在13那里,8是第二段,也就是 65-128Hz之间,13是第五段,也就是257-320Hz之间。这样就说通了,正好这个原始信号只有两个频率段,一个100一个300。如果我们不是分解了3层,而是更多层,那么每个频率段包含的频率也就越窄,图上有颜色的地方也会更细,也就是说更精细了,大家可以自己试试。将3改为6试试。由于原始信号的频率在整个1秒钟内都没有改变,所以有颜色的地方是一个横线。
再看一个实例:
有如下的一个信号,该信号的频率从25Hz左右增长到103Hz,信号长度是256,fs就定为256Hz,也是采样1秒。我们用上面的代码来分析这个信号,不过这次分解层数选为4层,也就是有2^4=16个频率段。每个频段是 128/16=8Hz. 这个时候就明白了前面讲到的order的重要性了吧。如果排序不是按照15 16 18 17 21,,23那个顺序拍的,就不可能出现这个随时间而频率增大的图了。从图上还可以看出,频率从第三个,也就是24Hz(3*8),一路走高到13个,也就是13*8=104Hz,正好和信号的图示一样,频率逐渐增大。
传统的振动信号分析和处理方法一般都是采用傅立叶分析,它是一个窗口函数固定不变的分析方法,无法反映信号的非平稳、持时短、时域和频域局部化等特性。
而小波分析是一种窗口面积固定但其形状可改变,即时间和频率窗都可改变的时频局部化分析方法,由于它在分解的过程中只对低频信号再分解,对高频信号不再实施分解,使得它的频率分辨率随频率升高而降低。
在这种情况下,小波包分解应运而生,它不仅对低频部分进行分解,对高频部分也实施了分解,而且小波包分解能根据信号特性和分析要求自适应地选择相应频带与信号频谱相匹配,是一种比小波分解更为精细的分解方法。
下面以一个爆破振动信号为例对其进行小波包分解。
对其采用db5 小波,进行3 层分解。分解树如图2 所示,左边为三层分解树,右边为点击相应节点得到的分解系数,图示为原始信号(节点(0,0))。根据信号的采样频率即可得每一个分解节点的频带范围,例如假设本里中数据的采样频率为1024 Hz,则奈奎斯特频率为512 Hz。则进行三层分解时,共分为2^3 = 8 个频带,每个频带的带宽为512/8 = 64 Hz。因此节点(3,0)的频带范围为0~64 Hz,节点(3,1) 的频带范围为65~128 Hz …………
分解后每个节点的小波包系数如图3 和图4 所示。
由此可见,原信号的主要能量集中在前两个频带内,即0~64 Hz 和65~128 Hz 内。