呵呵,又相见。DWT使用的是滤波器组完成的,不是直接用小波函数,DB小波系先由尺度函数得到低通滤波器(用于计算a)然后得到小波高通滤波器(用于得到d),最后推出相应的小波函数。如何由尺度函数和小波函数得到滤波器组是数学上的问题,你可以参看科学出版社的《小波理论算法与滤波器组》。
db8的滤波器长度应是16,由于DWT每做一层数据量要减半,所以最多一阶(层)的分解是需要最少32个点的,最多两阶(层)的分解需要最少64,当然由于wmaxlev函数有取整的计算(类似四舍五入)所以其结果可能会有偏差,例如60个点wmaxlev也可以得到分解2层的结论。
L = wmaxlev(400,‘db8’)则计算L=4。400个点,每分解一层数据量近似减半,由于使用滤波器卷积可能并不能精确减半,但那是另一个问题,这里为了便于说明姑且精确减半吧,1阶变200,2阶变100,3阶变50,4阶变25,25再向下是不合适做了,因为每向下分解一层要保证待分解的数据最少要32个,25<32所以再分解第5阶就不合适了。但DWT仍然可以出结果,就是其结果会被认为是不合理的,只是卷积运算的结果,从信号处理的角度这结果是有频率混迭的,并不符合DWT的理论。
如果采样的频率没有改变,对于去噪或其他应用,增减数据量是没什么意义的,分解层数的增加也不会增加实际的分辨率。因此个人建议是不必要的。
wmaxlev(s,‘db8’)函数中的 s 是导入数据的长度,对于db8小于32(实际是<31,还是取整运算的问题)时结果都是0.
离散小波的阶数问题
最新推荐文章于 2022-03-14 10:58:31 发布