要获得信号(函数)的高通和低通滤波器的输出,我们可以使用以下数学定义: this
所以,我尝试使用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]。
所以,我想问的是,实际上如何计算小波分解?
我在这个小波主题中真的很新,我已经阅读了这个主题的一些介绍,但我仍然对它的计算感到困惑。我非常感谢你的回答,提前谢谢:)