一、多孔算法原理介绍多孔算法(a

trous

algorithm)是由M.Shen于1992年提出的一种利用Mallat算法结构计算小波变换的快速算法,因在低通滤波器h0(k)和高通滤波器h1(k)中插入适当数目的零点而得名。它适用于a=2j的二分树结构,与Mallat算法的电路实现结构相似。

比较详细的介绍如下,来自论文《基于小波多孔变换的多传感器多目标跟踪航迹关联算法研究》http://www.docin.com/p-143869263.html。

二、多孔算法经验之谈

通过学习小波变换的多孔算法,发现很难理解,很多东西似懂非懂,比较困惑。下面的经验之谈来自网络,可以帮助理解。(http://www.360doc.com/content/10/0729/17/42159_42312820.shtml)

“小波的问题在那里?其中之一,平移不变性。说白了,先将源信号平移n位,再做小波变换,和先将源信号做小波变换,再平移n位,结果不同。这对于实时处理和一些场合是极为不便的。(gibbs效应于此也有关)。

怎么办?多孔算法(a

trous)可以解决此瓶颈。多孔算法,又称非抽取小波变换,即undecimated wavelet transform or

nonsampled wavelet

transform,简写(NSWT)。(有可能二进小波变换也是一个意思)。

实现多孔算法,需要什么呢?回答MALLAT算法是基础。若你不懂MALLAT,请去学习,或看我置顶的贴子。我可以告诉大家,我写TROUS代码从看论文到完成只用了10分钟。

但单单MALLAT算法够吗?答案否定的。我们必须找到两种算法的不同点。方可得心应手。这里我浅谈一二。

首先,为什么MALLAT不具有移不变特点而TROUS具有移不变特点。根源就在抽取插值上。看这个系统Y(N)=X(2N),它是不是移不变系统,显然不是。现在大家明白了吧。所以非抽取算法,是移不变的。而这个移不变所付出的代价,就是高频分量加低频分量长度再不是源信号的长度,而是源信号长度的2倍。

其次,滤波器还是可以用,WFILTERS()。而且重构和分解滤波器的关系,还是逆序后再右移一位(圆周卷积+周期延托)。但所有的滤波器系数要乘以SQRT(2)/2。为什么,答案在PR条件上。MALLET算法PR条件有两个,一个是抗混叠,另一个是完全重构。而多孔算法由于非插值抽取,只有完全重构,且等式的右边常数是“1”,而不是MALLET-PR条件的“2”。所以MALLET的PR条件要乘以“1/2”才和TROUS一致,而这个因子“1/2”正好被分配到两个滤波器上,所以是SQRT(2)/2。

再次,在每一层的下一层,滤波器中间要插值0。为什么?从谱上看,这是小波最经典的物理意义。数字信号一个周期的频谱范围为[-PI

PI],MALLAT算法的低通滤波[-PI/2 PI/2],高通滤波[-PI -PI/2] U [PI/2

PI],则滤波后低频分量频谱范围[-PI/2 PI/2]。这时注意“开始抽取,频谱展宽”,又回到源信号频谱[-PI

PI],然后再低通、高通滤波,周而复始。(小波包的问题顺便也说一下,实际上将高频抽取,频谱展宽后,发生了频谱颠倒现象,论坛里对此有精彩讨论,对此不再赘述。)而多孔呢?情况变了。低频分量始终是[-PI/2

PI/2],若低通滤波器仍是[-PI/2 PI/2],高通滤波器[-PI -PI/2] U [PI/2

PI],岂不是有些可笑吗?于是“滤波器插值”极其精妙的登场。低通和高通滤波器频谱变窄,低通[-PI/4 PI/4],高通[-PI/2

-PI/4] U [PI/4 PI/2],这下物理概念对了。那多孔有没有小波包呢,留给大家探讨。”

三、多孔算法MATLAB实现解析

MATLAB小波工具箱中的swt/iswt在离散化实现时本质上采用了多孔算法,但有些差别,主要体现在滤波器的操作上,严格的多孔算法在mallat滤波器上乘以sqrt(2)/2,而swt/iswt没有这样处理。其他差别待后续用MATLAB实现严格多孔算法后,再对比给出。

【——2013.5.27有更新

讨论:关于滤波器乘以sqrt(2)/2是否为多孔算法的必要条件,目前网上还存在争议。第一种观点认为“A trous

算法与SWT不一样,主要体现在滤波器的操作上,前者体现在滤波器乘以sqrt(2)/2,后者没有,不过两种算法都有滤波器插零的操作”。第二种观点认为“SWT在离散化实现时采用了a-trous算法”,即有无sqrt(2)/2并无本质区别,都是多孔算法。

刚开始以为观点一有道理,目前逐渐倾向于观点二。到底如何,待进一步熟悉理解,目前仅供讨论。

观点一来源:http://blog.csdn.net/windydreams/article/details/8063093

观点二来源:http://www.ilovematlab.cn/thread-102623-1-1.html】

接下来分析一下MATLAB swt的实现算法。

MATLAB中swt实现算法示意图

MATLAB中swt实现过程主要步骤是:

假设x=[x(1) x(2) x(3) x(4) x(5) x(6) x(7)],计算[swa, swd] =

swt(x,1,’db2’),其计算过程主要由以下几部分组成:

1、边缘延拓,由函数wextend完成。

仔细分析子程序部分,函数wextend的用法为x=wextend('1D','per',x,length(lo)/2),其中lo为滤波器,length(lo_db2)/2=2,则这样得到的x=[x(6)

x(7) x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(1)

x(2)]。

2、卷积运算,由函数wconv1完成。

低频系数:

a=wconv1(x,lo),相当于a=conv2(x,lo,'full'),conv2的详细说明见dwt的解释。

a=[a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8) a(9) a(10) a(11) a(12)

a(13) a(14)]

高频系数:

d=wconv1(x,hi),相当于d=conv2(x,hi,'full'),conv2的详细说明见dwt的解释。

d=[d(1) d(2) d(3) d(4) d(5) d(6) d(7) d(8) d(9) d(10) d(11) d(12)

d(13) d(14)]

3、抽取分解结果,由函数wkeep1完成。

swa(1,:) = wkeep1(a,7,5) = [a(5) a(6) a(7) a(8) a(9) a(10)

a(11)]

swd(1,:) = wkeep1(d,7,5) = [d(5) d(6) d(7) d(8) d(9) d(10)

d(11)]

至此,1级swt分解完成,然后输出[swa, swd]结果。

假如进行多级swt分解,则继续下一步。

4、滤波器隔点插0,由dyadup实现。

lo = dyadup(lo,evenoddVal,evenLEN) = dyadup(lo,0,1) = [l(1) 0 l(2)

0 l(3) 0 l(4) 0];

hi = dyadup(hi,evenoddVal,evenLEN) = dyadup(hi,0,1) = [h(1) 0 h(2)

0 h(3) 0 h(4) 0];

然后,以上一级的swa作为信号,重复步骤1、2、3则得到第2级swt分解。同理,循环上述步骤可以得到3、4、5。。。i

级swt分解结果。

综上所述,swt与dwt的主要差别在于,1)增加了步骤4对滤波器隔点插0;2)抽取分解结果时,swt抽取的长度与原始信号长度一样,而dwt则抽取了原始信号长度的(1/2)^i,在此i为level分解级数或分解层数。(个人理解,欢迎讨论交流)

wextend matlab,小波学习之三(多孔算法与MATLAB swt剖析)转载相关推荐

  1. Matlab小波工具箱的使用2

    Matlab小波工具箱的使用2 (2011-11-11 09:32:57) 转载▼ http://blog.sina.com.cn/s/blog_6163bdeb0102dw7a.html#cmt_5 ...

  2. matlab 小波启发式阈值滤波,小波阈值去噪

    小波阈值去噪 小波阈值去噪 目录 1.概念 2.原理 3.影响降噪效果的因素 3.1小波基的选择 3.2分解层数的选择 3.3阈值的选择 3.4阈值函数的选择 4.MATLAB代码 参考文献 小波分析 ...

  3. bp神经网络mallat小波matlab,小波神经网络原理及其应用汇总.ppt

    小波神经网络原理及其应用汇总,小波神经网络原理,小波变换原理与应用,神经网络的原理及应用,小波神经网络matlab,小波神经网络预测代码,小波神经网络模型,小波神经网络预测程序,小波神经网络预测,小波 ...

  4. 【图像去噪】基于matlab小波滤波(硬阙值+软阙值)+中值滤波图像去噪【含Matlab源码 462期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像去噪]基于matlab小波滤波(硬阙值+软阙值)+中值滤波图像去噪[含Matlab源码 462期] 获取代码方式2: 通过订阅紫极神光 ...

  5. mallat算法 c语言,基于STM32F4的小波分解(Mallat算法)程序说明

    一.主要思路 原始信号:OrgSig 信号长度:DWT_SIG_LEN 小波分解层数:N 与MATLAB类似,小波分解后产生2个数组DWT_L和DWT_C,但定义与MATLAB不同.定义如下: DWT ...

  6. 利用matlab小波GUI工具箱对空挡噪声进行滤波

    利用matlab小波GUI工具箱对空挡噪声进行滤波: 1.命令wavemenu调出matlab小波GUI工具箱, 2.File->load加载噪声音频文件,wavelet 1-D,选择小波函数, ...

  7. 正交db小波 图像处理 matlab,基于matlab小波工具箱的数字图像处理及小波分析

    基于matlab小波工具箱的数字图像处理及小波分析 基于 Matlab 小波工具箱的数字图像处理摘要:小波分析在图像处理中有非常重要的应用,包括图像压缩.去噪.分解和增强等.运用多分辨率分析可以将信号 ...

  8. 【语音去噪】基于matlab小波硬阈值语音降噪【含Matlab源码 532期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[语音去噪]基于matlab小波硬阈值语音降噪[含Matlab源码 532期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  9. 小波学习笔记——MATLAB

    使用MATLAB进行小波的学习,学习尺度函数.小波函数以及小波函数构造的方法 1.db3小波器的提取 2.对一维信号进行小波滤波 3.对图片进行小波滤波 4.自己构建dbN小波滤波器 5.用Casca ...

  10. matlab decomposition filters,MATLAB小波去噪求助(附算法和显示图片)!不知自己哪个地方出了问题,求指点! - 信息科学 - 小木虫 - 学术 科研 互动社区...

    star2883 不是非常明白楼主的意思.我的理解是: 问题1:为什么中间两幅图,显示的都是空白? 答:你是指Figure2和Figure3的显示中,全是白色吗?这个是因为你用了colormap(ma ...

最新文章

  1. AndroidStudio 解决Android方法数超过65535的问题
  2. 安装Synchronization service (Project Server 2007) 时出现 MSMQ 错误的解决
  3. matlab从入门到精通-常用的几种缺失值处理方法
  4. LOJ#6044. 「雅礼集训 2017 Day8」共(Prufer序列)
  5. 【PP操作手册】成品入库和订单报工
  6. 【项目管理】专用中英文术语词汇 205
  7. groupByKey、reduceByKey区别(转)
  8. SAP中国,在中国,为中国,一些包含了SAP logo的NBA运动套装
  9. ThinkPHP包含文件
  10. bootstrap中导航、导航栏、表单及自定义表单
  11. Cuyahoga 添加模块
  12. 自动生成 Makefile 的全过程详解! automake/autoconf 入门
  13. 基于矩阵分解的PCA 白化ZCA白化
  14. android banner设置图片比例,Banner基本使用 2.1.0
  15. iOS上栈溢出崩溃详解
  16. 昵图网共享分下载代包下素材nipic呢图下载币图网设计素材下载
  17. 动态规划DP的概念与总结
  18. How add nic driver to initrd
  19. ff14服务器信息1014,FF14服务器追加开放汇总信息-8月26日
  20. 数据库课程设计-职工工资管理系统

热门文章

  1. 31. Magento图片大小调整的相关代码
  2. 35. PHP 字符串
  3. chanlist.php,Nginx+FastCgi+Php 的工作机制
  4. 2019php面试题
  5. 2、linux网络编程--无连接与面向连接的区别
  6. tomcat的server.xml中的Context节配置
  7. SpringMvc上传文件遇到重复读取InputStream的问题
  8. JavaSE复习_8 泛型程序设计
  9. web.config点滴:更改login控件对密码安全性的要求
  10. winform 文件上传限制文件类型及文件大小