Два разных значения для вейвлет -преобразования (Daubechies D4)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Два разных значения для вейвлет -преобразования (Daubechies D4)

Сообщение Anonymous »

Я тестирую этот код < /p>

protected final double sqrt_3 = Math.sqrt( 3 );
protected final double denom = 4 * Math.sqrt( 2 );
//
// forward transform scaling (smoothing) coefficients
//
protected final double h0 = (1 + sqrt_3)/denom;
protected final double h1 = (3 + sqrt_3)/denom;
protected final double h2 = (3 - sqrt_3)/denom;
protected final double h3 = (1 - sqrt_3)/denom;
//
// forward transform wavelet coefficients
//
protected final double g0 = h3;
protected final double g1 = -h2;
protected final double g2 = h1;
protected final double g3 = -h0;

protected void transform( double a[], int n )
{
if (n >= 4) {
int i, j;
int half = n >> 1;

double tmp[] = new double[n];

i = 0;
for (j = 0; j < n-3; j = j + 2) {
tmp = a[j]*h0 + a[j+1]*h1 + a[j+2]*h2 + a[j+3]*h3;
tmp[i+half] = a[j]*g0 + a[j+1]*g1 + a[j+2]*g2 + a[j+3]*g3;
i++;
}

tmp = a[n-2]*h0 + a[n-1]*h1 + a[0]*h2 + a[1]*h3;
tmp[i+half] = a[n-2]*g0 + a[n-1]*g1 + a[0]*g2 + a[1]*g3;

for (i = 0; i < n; i++) {
a = tmp;
}
}
} // transform
< /code>

Чтобы выполнить вейвлет -преобразование Daubechies D4 в этом дискретном массиве: < /p>

[1,2,0,4,5,6,8,10]
< /code>

Результат < /p>

- 0 : 1.638357430415108
- 1 : 3.6903274198537357
- 2 : -2.6439375651698196
- 3 : 79.01146993331695
- 4 : 7.399237211089009
- 5 : 0.3882285676537802
- 6 : -39.6029588778518
- 7 : -19.794010741818195
- 8 : -2.1213203435596424
- 9 : 0.0
< /code>

Но когда я использую python pywt.dwt < /code> в одном и том же массиве, я получаю это: < /p>

import pywt
[cA, cD] = pywt.dwt([1,2,0,4,5,6,8,10], 'db4')

>>> >>> cA
array([ 7.14848277, 1.98754736, 1.9747116 , 0.95510018, 4.90207373,
8.72887094, 14.23995582])
>>> cD
array([-0.5373913 , -2.00492859, 0.01927609, 0.1615668 , -0.0823509 ,
-0.32289939, 0.92816281])
< /code>

Помимо разных значений, один имеет 10 элементов, а другой 7. < /p>

Чего мне не хватает? /п>

Подробнее здесь: https://stackoverflow.com/questions/552 ... bechies-d4
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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