欢迎光临散文网 会员登陆 & 注册

小波变换[3.5] -- Daubechies 小波系数

2022-01-19 16:24 作者:nyasyamorina  | 我要投稿

在之前的推导过程里有几个命题是等价的,  1) 尺度关系式 %5CPhi(x)%3D%5Csum_%7Bk%5Cin%5Cmathbb%20Z%7Dp_k%5CPhi(2x-k) 等价于 %5Csum_%7Bk%5Cin%5Cmathbb%20Z%7Dp_k%3D22) 标准正交性 %5Cint_%5Cmathbb%20R%5CPhi(x)%5CPhi(x-l)dx%3D%5Cdelta_%7B0%2Cl%7D 等价于 %5Csum_%7Bk%5Cin%5Cmathbb%20Z%7Dp_%7Bk-2l%7D%5Coverline%7Bp_k%7D%3D2%5Cdelta_%7B0%2Cl%7D3) N 阶 D-小波拥有 N 阶消失矩 %5Cint_%5Cmathbb%20Rx%5Em%5Cphi(x)dx%3D0%3B%5C%3Bm%3D0%2C%5C%2C%5Ccdots%2C%5C%2CN-1 等价于 %5Csum_%7Bk%5Cin%5Cmathbb%20Z%7D(-1)%5Ekp_kk%5Em%3D0%3B%5C%3Bm%3D0%2C%5C%2C%5Ccdots%2C%5C%2CN-1 [证明过程不明].  由这几条累加式可以精确地求出 N 等于 1 至 3 时尺度系数 %5C%7Bp_k%5C%7D 的数值,  但对于 N>3 的情况只能求出数值近似解.  下面以 p%5E%7B(N)%7D_k给出 N 阶 D-小波的第 k 个尺度系数的精确值:

 p%5E%7B(1)%7D_0%3Dp%5E%7B(1)%7D_1%3D1

 p%5E%7B(2)%7D_0%3D%5Cfrac%7B1%7D%7B4%7D(1%2B%5Csqrt3)p%5E%7B(2)%7D_1%3D%5Cfrac%7B1%7D%7B4%7D(3%2B%5Csqrt3)p%5E%7B(2)%7D_2%3D%5Cfrac%7B1%7D%7B4%7D(3-%5Csqrt3), p%5E%7B(2)%7D_0%3D%5Cfrac%7B1%7D%7B4%7D(1-%5Csqrt3)

p%5E%7B(3)%7D_0%3D%5Cfrac%7B1%7D%7B16%7D(1%2B%5Csqrt%7B10%7D%2Bq), p%5E%7B(3)%7D_1%3D%5Cfrac%7B1%7D%7B16%7D(5%2B%5Csqrt%7B10%7D%2B3q), p%5E%7B(3)%7D_2%3D%5Cfrac%7B1%7D%7B8%7D(5-%5Csqrt%7B10%7D%2Bq), p%5E%7B(3)%7D_3%3D%5Cfrac%7B1%7D%7B8%7D(5-%5Csqrt%7B10%7D-q), p%5E%7B(3)%7D_4%3D%5Cfrac%7B1%7D%7B16%7D(5%2B%5Csqrt%7B10%7D-3q)p%5E%7B(3)%7D_5%3D%5Cfrac%7B1%7D%7B16%7D(1%2B%5Csqrt%7B10%7D-q),  其中 q%3D%5Csqrt%7B5%2B2%5Csqrt%7B10%7D%7D.


使用上面几条方程组求解 N>3 时尺度系数的数值成本过高,  需要更快速的算法,  Daubechies 提出了一个解多项式零点求尺度系数的算法:

求解多项式 %5Csum_%7Bk%3D0%7D%5E%7BN-1%7D%5Cleft(%5Cbegin%7Bmatrix%7DN-1%2Bk%5C%5Ck%5Cend%7Bmatrix%7D%5Cright)q%5Ek 的零点,  得出 N-1 个复根 q_1%2C%5Ccdots%2Cq_%7BN-1%7D.  然后对每个复根求解多项式 %5Cfrac%7B1%7D%7B2%7D-%5Cfrac%7B1%7D%7B4r%7D-%5Cfrac%7Br%7D%7B4%7D%3Dq_k%3B%5C%3Bk%3D0%2C%5Ccdots%2CN-1,  每个 q 都可以解出两个 r,  只保留模长小于 1 的那个,  得到数列 r_1%2C%5Ccdots%2Cr_%7BN-1%7D.  使用这个数列组合得多项式 (z%2B1)%5EN%5Cprod_%7Bk%3D1%7D%5E%7BN-1%7D(z-r_k),  这个多项式与 M%5Csum_%7Bk%3D0%7D%5E%7B2N-1%7Dp_%7B2N-1-k%7Dz%5Ek 等价,  其中 M 是一个常数,  求得这个多项式各项系数后逆序得系数 c_k,  那么尺度系数 p_k2c_k%5Ccdot%5Cleft(%5Csum_%7Bl%7Dc_l%5Cright)%5E%7B-1%7D 给出.

特别地,  如果求解 r 时保留模长大于 1 而不是小于 1 的,  那么 (z%2B1)%5EN%5Cprod_%7Bk%3D1%7D%5E%7BN-1%7D(z-r_k) 与 M%5Csum_%7Bk%3D0%7D%5E%7B2N-1%7Dp_kz%5Ek 等价.  虽然这时候不需要逆序多项式系数,  但是原文并不是使用这种.

当使用数值求解尺度系数时,  由于浮点数误差,  并不会精确给出实数数值,  直接取结果的实值就好.  下面给出 julia 的实现

q 的值是由 Polynomials 包提供的方法解多项式的根给出,  第一个 r 是 %5Cfrac%7B1%7D%7B2%7D-%5Cfrac%7B1%7D%7B4r%7D-%5Cfrac%7Br%7D%7B4%7D%3Dq 的其中一个解,  当 r 的模长大于 1 时由 1/r 给出 r 的第二个解,  代码其余部分就是求系数了.

?:  我发现仅当 q%5Cin(%5CRe%5Bq%5D%5Cgeq0%5Ccap%5CIm%5Bq%5D%3D0)%20%5Ccup(%5CRe%5Bq%5D%3E1%5Ccap%5CIm%5Bq%5D%5Cneq0) 才会满足条件 abs2(r) ≥ 1,  并且验证了 N 从 1 到 30 产生的所有 q 都不在这个范围里,  所以有理由怀疑标记着 ? 的语句永远也不会执行.  但是不会如何证明这个猜想,  所以还是把语句留在上面算了.


代码已上传的 gayhub: github.com/nyasyamorina/trash-bin/blob/main/wavelet%20-%20Daubechies.jl

不过虽然但是,  代码都已经贴出来了,  也不需要再去 gayhub 了.


日常推瑟图群: 274767696

封面pid: 79581830

小波变换[3.5] -- Daubechies 小波系数的评论 (共 条)

分享到微博请遵守国家法律