称使用Tpwp的小波包系数的方法,为基于分解(decomposition)树的小波包分析;称使用Matlab工具箱的小波包系数的方法,为基于合成(重组recomposition)树的小波包分析。理想情况下,这二者是相同的,但是在实用中,有数字误差,明确区分两种系统的分析处理是有益的。
这里分辨的关键,是数值,而非管理方式。未必像Matlab工具箱那样使用对象等编程和定义了“树”。
可以认为:Tpwp的分解系数矩阵的元素,与重建的滤波过程无关;而Matlab工具箱中所谓的小波包系数,除去正变换运算中的最终端的尺度上的数据外,都可视为其子子孙孙节点上数据的合成、重建结果。
据Matlab的帮助文档,易知函数wprcoef和wprec,正如其名字中的字母r所指,明显与合成(用部分节点的重建computes reconstructed coefficients和完整地重建returns the reconstructed vector )有关。而且wprec被称为分解函数wpdec的逆函数(the inverse function of wpdec)。然而,可能误以为函数wpcoef输出(returns the coefficients associated with the node)的是,等于Tpwp中分解数据阵列中的系数值,那么,以为它与合成滤波器无关, 下文的Y1就可精确地等于被分解信号X。
在R2011a中,用T= wpdec(X,……)对信号X做小波包分解后,紧接着运行
Y1=wpcoef(T); Y2=wprcoef(T); Y3=wprec(T);
所得的Y1和Y2以及Y3,是完全相同的。它们都与X间,有依赖于滤波器组和数据延拓模式的误差,类似于在普通离散小波变换中的完美重建误差。
Matlab工具箱的普通离散小波分解函数wavedec的输出,是不涉及重建滤波器组的“纯分解”的结果。所以博文《普通离散小波变换是小波包变换树中的一部分》(2013-11-03),从Tpwp的小波包树上,反而比从Matlab自己的工具箱的小波包树上,能获得与wavedec输出系数的误差更小的变换结果。
利用Matlab小波工具箱,不显现字眼 “重建”或“合成”以及相应的编程语句,就能可视化与滤波器组和数据延拓模式有关的系统误差。以图片1.的程序为例。计算结果如图片2.所示,由wpcoef获得的根节点(node 0)上的系数,与被分解信号的误差,绘于上半部;由wp2wtree从小波包树上摘取的普通离散小波系数,与wavedec的输出序列的误差,绘于下半部。用高斯白噪声为测试信号,其均值在区间[-8,8]内均匀分布,标准差在[1,68]内均匀分布。
又一次看到,理想per模式最佳。选用其它某些模式,需更谨慎。
新浪赛特居士SciteJushi-2014-11-19。
图片1. 测验Matlab小波包系数与被处理信号和普通小波变换数据的误差的m程序