Как рассчитать вейвлет-разложение?

Для получения выходного сигнала фильтра верхних и нижних частот сигнала (функции) мы можем использовать следующее математическое определение:

Итак, я попытался вычислить его без библиотеки, используя следующий код с 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)

Затем я получил (-0,7071067, -0,7071067) для CD и (0,7071067, 3,535533) для CA. Но когда я использую этот код из библиотеки, я получил другой ответ:

import pywt
cA, cD = pywt.dwt([1, 2, 3, 4], 'db1')

Результат отличается от моего собственного кода. то есть [ 2.12132034, 4.94974747] для cA и [-0.70710678 -0.70710678] для cD.

Итак, я хочу спросить, как на самом деле вычисляется вейвлет-разложение?

Я действительно новичок в этой теме вейвлета, я уже прочитал некоторое введение в эту тему, но я все еще запутался с ее вычислениями. Я очень ценю ваш ответ, заранее спасибо:)

0 ответов

Другие вопросы по тегам