首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

小波包分解频带顺序的排列

小波包分解频带顺序的排列

来源http://blog.sina.com.cn/s/blog_75f0893501015nvb.html
这段时间在研究小波包去噪,一直搞不清小波包分解之后各个结点与频带的对应关系。为了方便理解,下面举一个3层小波包分解的例子吧。

首先将输入信号分解成三层,显示树结构为:



树的左边是低通滤波,右边是高通滤波,所以我自然而然的就觉得结点的频带按照从小到大排列顺序应该为:
(3,0) (3,1) (3,2) ....(3,6)(3,7)
但是通过wpviewcf(t,1)这个函数可以看到实际各个结点的频带排列顺序并不是这样的,事实上,正确的频带顺序应该如下图所示:



即正确顺序为:(3,0)(3,1) (3,3) (3,2) (3,6) (3,7) (3,5)(3,4),这是为什么呢?
原来从根节点开始,每个结点的信号通过低通滤波和高通滤波之后都需要在进行一个向下采样的过程,实际上就是隔几个点采样一次,是一种降低采样率的过程,具体的这里为2倍下采样上,即只保留偶数序号的元素。具体问题就出在2倍下采样上经过高通滤波之后,下采样前的信号频谱是带限于(pi/2,pi)上的(负频率部分与此对称)。对于这一高频信号进行2倍下采样可以分解为先后的两步:1将频谱展宽2倍并且幅度降为一半(幅度的因子对这个问题没什么影响);2将频谱以2pi为周期进行延拓,如图示。这样经过下采样后信号的频谱形状(在(0,pi)内的部分)恰好左右翻转了,即原先的高频(pi)变为了0,而原先子带中的低频(即pi/2)变为了高频(pi)。如此一来,经过小波包分解后,所有经过了高频滤波并下采样的分量的频谱顺序都要翻转一次,最终的频谱顺序形成格雷码的顺序。
实际上,matlab每一层小波包分解还包括了高频结点翻转这一步骤,只是没有显示出来,为了方便大家理解,我讲上面那个例子中3层分解的详细过程阐述如下:
1.将信号从(0,0)结点开始分解,如图所示:


这里面(1,0)是经过低通滤波之后2倍向下采样的结果,(1,1)高
通滤波之后2倍向下采样的结果,第一步分解不需要翻转。
2.分别对(1,0),(1,1)再进行分解得到第二层结果如下图所示:注意这里(2,2)和(2,3)的排列顺序需要翻转,因为他们都是从高频结点(1,1)中分离出来的:

所以经过翻转之后的排列顺序应该为下图所示,从左到又频带依次增高

3. 按照这个顺序再进行第三步分解,如下图所示:


此时需要把(3,2)和(3,3)、(3,4)和(3,5)的顺序翻转一下,得到下图:


这就是3层分解后,各个结点按照频宽排列的最终结果,即从低到高的顺序为:7,8,10,9,13,14,12,11

这与前面用wpviewcf(t,1)画出的结果图就完全一致了。
---------格雷码------------------------------------------
事实上,小波包分解之后,各个结点按照频宽排列的结果可以用格雷码的形式来表现。
从根结点(0)开始,自上而下,通过高通滤波器我们就认为是“1”,通过低通滤波器我们就认为是“0”,这样,将这些代码从左到右排列就形成了一个二进制码,例如结点(3,0)就可以表示为0000,结点(3,1)就可以表示为0001,这样通过每个结点的二进制码我们可以得到其相应的格雷码,而格雷码就是最终各个结点按照频带排列的顺序,
这里仅给出二进制码转为为格雷码的方法,如下图所示。

如0000的格雷码为0000,0001的格雷码为0001,0101的格雷码为0111,依次类推。
继承事业,薪火相传
很好的资料,如果图片能显示出来就更好了
返回列表