小波包变换入门——MATLAB

小波包变换的优势:(大部分书上 网上都有,我就简单摘了点过来) 
由于正交小波变换只对信号的低频部分做进一步分解,而对高频部分也即信号的细节部分不再继续分解,所以小波变换能够很好地表征一大类以低频信息为主要成分的信号,但它不能很好地分解和表示包含大量细节信息(细小边缘或纹理)的信号,如非平稳机械振动信号、遥感图象、地震信号和生物医学信号等。与之不同的是,小波包变换可以对高频部分提供更精细的分解,而且这种分解既无冗余,也无疏漏,所以对包含大量中、高频信息的信号能够进行更好的时频局部化分析。

研究了两天,发现如果从头开始研究需要的时间太长,而且如果想真正弄懂小波,还需要了解泛函的知识并且硬着头皮去看那些枯燥的公式。由于我们科研只要明白个大概,能够找到合适的工具来使用,就可以了。因为之前我弄懂傅里叶变换的时候,也是从先会用再到逐渐深入理解的,所以这次我还是先从会用开始。研究了两天之后,发现我小波变换没弄懂什么,小波包先会用了。由于我痛苦的搜了整个网,慢慢理解了一些东西,所以把有用的几个部分拿过来,结合MATLAB,给和我一样想入门的同学一个参考。

首先,小波包的一些基本的基本要弄懂,就是小波包是从原始信号,分级向下分解。如下图所示。 
这就是小波包树,其中节点的命名规则是从 (1,0)开始,叫1号,(1,1)是2号,,,,依此类推,(3,0)是7号,(3,7)是14号。每个节点都有对应的小波包系数,这个系数决定了频率的大小,也就是说频率信息已经有了,但是时域信息在哪里呢? 那就是 order。 这个order就是这些节点的顺序,也就是频率的顺序。 
比如,节点的排序是 1,2,3,,,,14,那么频率就按先1号的频率变化,后2号的,再3号的,,,然后14号的。 
这里写图片描述

来看一个实例: 
采样频率为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 
这里写图片描述

现在开始解释: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,正好和信号的图示一样,频率逐渐增大。 
这里写图片描述

这里写图片描述

转载:http://blog.sina.com.cn/s/blog_8fc890a20101ecn7.html#cmt_2779060

猜你喜欢

转载自blog.csdn.net/u011473714/article/details/80197475