http://www.chinavib.com/forum/thread-56219-1-79.html
用wavedec对一个给定信号x进行分解时,采用如下格式:
[C,L] = WAVEDEC(X,N,'wname')
其中C为所有近似系数和细节系数构成的向量。
但是这里我有一个问题,当N不同时,得到的C的长度不一样,这是为什么?有什么办法能够得到在不同分解层数下同样长度的小波系数?
--------------------------------
长度当然会有所不同了,不同的N代表不同层数的近似空间,而不同层数的近似空间的维数是不同的,所以分解系数的长度就不同了
你说的那个问题应该没有什么意义吧……
--------------------------------
当然有意义了!
潘泉老师的专著《小波滤波方法及应用》中提到有这么一种小波降噪方法:即利用同一个信号x在不同尺度上的小波系数相乘,构造一个滤波器,然后对原信号降噪。如果不同尺度上的小波系数长度不一样,它怎么能够相乘呢?
-------------------------------
我也正想问楼主的这个问题呢。看过一些文章进行小波分解后信号长度仍跟原信号长度一样。
------------------------------
多孔算法
---------------------------------
我的理解是,matlab在做小波分解的时候,会在信号两边进行延拓,以完全算法。
对于输入不同的数据样本,延拓的个数不一样,
所以出来的个数也就不一样。
---------------------------------
暂时解决了,采用cwt可以得到与原信号长度相同的小波分解系数!
--------------------------------
SWT也可以。
-----------------------------
对提出的问题:用wavedec对一个给定信号x进行分解时,采用如下格式:
[C,L] = WAVEDEC(X,N,'wname')
其中C为所有近似系数和细节系数构成的向量。
但是这里我有一个问题,当N不同时,得到的C的长度不一样,这是为什么?有什么办法能够得到在不同分解层数下同样长度的小波系数?
当N不同是C是肯定不同。若原始输入信号的长度为LEN的话分解N层的话,C的长度理论上应该为LEN/(2的N次方 ),即若分解一层C的长度为LEN/2,分解3层的话为LEN/8
当然也有办法在不同分解层数下获得同样的长度,那就要做单支重构 MATLAB中有函数可以直接调用 如wrcoef(小波分解) wprcoef(小波包分解)
具体可见《小波分析理论与MATLAB实现》的红书
文章评论(0条评论)
登录后参与讨论