寂寞的部落 发表于 2013-10-23 11:39

Mallat算法是如何实现的?

请问小波分析中的Mallat算法是如何实现的?在计算机上是通过双通道滤波器组来实现,那么这个滤波器的冲击响应h,g是如何确定的呢?

sunyuxinhe 发表于 2013-10-25 14:05

h,g的值,可以通过程序获得。

显示滤波器系数函数:wfilters

wfilters(‘wname’)
查询滤波器系数
wfilters('db1')
wfilters('db4')
=wfilters('sym3')
同时查询低通和高通滤波器系数

寂寞的部落 发表于 2013-10-25 14:58

sunyuxinhe 发表于 2013-10-25 14:05 static/image/common/back.gif
h,g的值,可以通过程序获得。

显示滤波器系数函数:wfilters


是的,有直接求滤波器系数的函数,但在Mallat算法中,若从滤波器的角度上讲的话,比如第一层分解就是原始信号经过一个低通滤波器h0和高通滤波器h1分别得到低频系数C1和高频系数d1,之后在对c1进行第二层分解经过一个低通滤波器h0和高通滤波器h1分别得到低频系数C2和高频系数d2,依次下去。。在计算机实现过程中,通过一个多孔算法具体我是看的一篇博士论文上有写到,一直弄不明白多孔算法中滤波器的冲击响应是怎么通过插值、等效易位关系变换的?

sunyuxinhe 发表于 2013-10-25 15:01

下载你的东西,太耗体能。
发我邮箱,sjtusun@foxmail.com

另外“比如第一层分解就是原始信号经过一个低通滤波器h0和高通滤波器h1分别得到低频系数C1和高频系数d1,” 是不对的。因为原始信号不是小波系数。

寂寞的部落 发表于 2013-10-25 15:14

sunyuxinhe 发表于 2013-10-25 15:01 static/image/common/back.gif
下载你的东西,太耗体能。
发我邮箱,sjtusun@foxmail.com



哦,我一直是这么理解的,那“原始信号不是小波系数”,你的意思是分解出来的低频与高频系数是什么?

sunyuxinhe 发表于 2013-10-25 15:17

寂寞的部落 发表于 2013-10-25 15:14 static/image/common/back.gif
哦,我一直是这么理解的,那“原始信号不是小波系数”,你的意思是分解出来的低频与高频系数是什么?

这篇论文里有讲,它是把原始信号,近似为0层尺度系数。

寂寞的部落 发表于 2013-10-25 15:28

sunyuxinhe 发表于 2013-10-25 15:17 static/image/common/back.gif
这篇论文里有讲,它是把原始信号,近似为0层尺度系数。

是的,在进行多层分解时,先把原始信号看成0层分解的低频尺度系数,我想知道在编程具体操作时,是按多孔算法来求时,那个低通与高通分解(重构)滤波器的冲击响应是如何变化的?


sunyuxinhe 发表于 2013-10-25 15:33

寂寞的部落 发表于 2013-10-25 15:28 static/image/common/back.gif
是的,在进行多层分解时,先把原始信号看成0层分解的低频尺度系数,我想知道在编程具体操作时,是按多孔算 ...

没有看到邮件?

波尔 发表于 2013-11-19 09:50

寂寞的部落 发表于 2013-10-25 15:28 static/image/common/back.gif
是的,在进行多层分解时,先把原始信号看成0层分解的低频尺度系数,我想知道在编程具体操作时,是按多孔算 ...

你好,我也在弄小波这块。请问你对小波包分解与重构有研究吗?

寂寞的部落 发表于 2013-11-19 15:22

波尔 发表于 2013-11-19 09:50 static/image/common/back.gif
你好,我也在弄小波这块。请问你对小波包分解与重构有研究吗?

我目前还没用小波包,不过我觉的都是一样的,小波包应该是把分解出来的高频部分再做分解成低频和高频成分

波尔 发表于 2013-11-19 15:43

本帖最后由 波尔 于 2013-11-19 16:31 编辑

寂寞的部落 发表于 2013-11-19 15:22 static/image/common/back.gif
我目前还没用小波包,不过我觉的都是一样的,小波包应该是把分解出来的高频部分再做分解成低频和高频成分
我通过MATLAB找到分解用的小波对应的滤波器,然后采用先将原始数据序列与分解滤波器卷积,然后二元抽取,得到下一层高低频小波系数。发现各小波系数个数不是原始数据个数的一半,而是多了几个。再进行二元插值后与重构滤波器卷积再相加,发现重构后的信号序列个数比没分解时多了一些。这是怎么回事?
方便留下QQ吗

寂寞的部落 发表于 2013-11-19 16:48

波尔 发表于 2013-11-19 15:43 static/image/common/back.gif
我通过MATLAB找到分解用的小波对应的滤波器,然后采用先将原始数据序列与分解滤波器卷积,然后二元抽取, ...

如果一个信号长度为n,滤波器长度为k,那么卷积之后得到第一层的高频、低频信号长度为n+k-1,你在做二抽取之后最终的一层分解高低频信号长度为Floor((n+k-1)/2).这个是在MATLAB 中dwt的算法,这也是wavedec函数也是这么做的。

波尔 发表于 2013-11-19 16:50

本帖最后由 波尔 于 2013-11-19 16:53 编辑

寂寞的部落 发表于 2013-11-19 16:48 static/image/common/back.gif
如果一个信号长度为n,滤波器长度为k,那么卷积之后得到第一层的高频、低频信号长度为n+k-1,你在做二抽取之 ...
方便在QQ上交流吗? 那既然重构后和原信号不一样了,能行吗
页: [1]
查看完整版本: Mallat算法是如何实现的?