Вручную воссоздать функцию iswt в Python ⇐ Python

Программы на Python
Anonymous
Вручную воссоздать функцию iswt в Python

Сообщение Anonymous »

Я хочу вручную воссоздать функцию pywt.iswt в Python, потому что хочу использовать ее в контексте пакета вейвлетов. К сожалению, я не совсем понимаю, какие шаги выполняет функция, даже после просмотра исходного кода.
Я попробовал свертку коэффициентов уровня 1 с фильтрами реконструкции, чтобы вернуться к оригиналу. сигнал, но получаю ложные результаты.

Код: Выделить всё

import pywt
import numpy as np
from scipy.signal import convolve

signal = np.array([1,2,3,4,5,6,7,8])
wavelet = pywt.Wavelet('db2')
desired_level = 1
Lo_rec = wavelet.rec_lo
Hi_rec = wavelet.rec_hi

coeffs = pywt.swt(signal, wavelet, level=desired_level)
(cA, cD) = coeffs[0]

def convolve(signal,filter):
n = len(signal)
m = len(filter)
output = []
for i in range(n-m+1):
conv_sum = 0
for j in range(m):
conv_sum += signal[j+i] * filter[(m-1)-j]
output.append(conv_sum)
return output

result1 = convolve(cA, Lo_rec)
result2 = convolve(cD, Hi_rec)

print([sum(x) for x in zip(result1, result2)])
Кто-нибудь знает, как мне это сделать?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python

Вернуться в «Python»