要获得信号(函数)的高通和低通滤波器的输出,我们可以使用以下数学定义 :
因此,我尝试在没有库的情况下使用以下代码和 python 2.7 计算它:
import pywt # getting the low and highpass filter
w = pywt.Wavelet('db1')
lof = w.dec_lo
hif = w.dec_hi
x = [1,2,3,4]
y_high0 = x[0]*hif[0]
y_high1 = x[1]*hif[1]+x[2]*hif[0]
cD = (y_high0, y_high0) # (-0.7071067, -0.7071067)
y_low0 = x[0]*x[0]
y_low1 = x[1]*lof[1]+x[2]*lof[0]
cA = (y_low0, y_low0) # (0.7071067, 3.535533)
然后我得到 cD 的 (-0.7071067, -0.7071067) 和 cA 的 (0.7071067, 3.535533)。但是当我使用库中的这段代码时,我得到了不同的答案:
import pywt
cA, cD = pywt.dwt([1, 2, 3, 4], 'db1')
结果与我自己的代码不同。即 cA 为 [ 2.12132034 4.94974747] , cD 为 [-0.70710678 -0.70710678]。
所以,我想问的是,小波分解实际上是如何计算的?
我对这个小波主题真的很陌生,我已经阅读了这个主题的一些介绍,但我仍然对它的计算感到困惑。非常感谢您的回答,在此先感谢:)