db2的一维数据变换和逆变换(python)

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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值