import numpy as np
import math
import pywt
s3 = math.sqrt(3)
d = 4*math.sqrt(2)
h0 = (1+s3)/d
h1 = (3+s3)/d
h2 = (3-s3)/d
h3 = (1-s3)/d
g0 = h3
g1 = -h2
g2 = h1
g3 = -h0
def Fwt(data):
temp = [0]*(len(data)+4)
temp[0] = data[1]
temp[1] = data[0]
temp[2:2+len(data)] = data
temp[2+len(data)] = data[-1]
temp[len(data)+3] = data[-2]
data = temp
half = int(len(data)/2)-1
res = [0] * (half)*2
for i in range(half):
res[i] = data[2*i]*h0 + data[2*i+1]*h1 + data[2*i+2]*h2 + data[2*i+3]*h3
res[half+i] = data[2*i]*g0 + data[2*i+1]*g1 + data[2*i+2]*g2 + data[2*i+3]*g3
return res
def Iwt(data):
res = [0]*len(data)
half = int(len(data)/2)
for i in range(1,half):
res[2*i] = data[i]*h0 + data[i-1]*h2 + data[i+half]*g0 + data[i+half-1]*g2
res[2*i+1] = data[i]*h1 + data[i-1]*h3 + data[i+half]*g1 + data[i+half-1]*g3
return res[2:]
if __name__ == '__main__':
print(1/math.sqrt(2))
print(h0," : ",h1," : ",h2," : ",h3," : ")
print(g0, " : ", g1, " : ", g2, " : ", g3, " : ")
A = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(A)
tag = pywt.dwt(A, 'db2')
print(tag)
print("******* tag end *********\n\n")
B = Fwt(A)
print(B)
C = Iwt(B)
print(C)
07-31
1万+