Je cherche un moyen de reconstruire partiellement des branches d'une décomposition en ondelettes, de telle sorte que la somme recréerait le signal original. Cela pourrait être réalisé en utilisant Matlab en utilisant:Reconstruction partielle d'ondelettes à plusieurs niveaux avec pyWavelets
DATA = [0,1,2,3,4,5,6,7,8,9]
N_LEVELS = 2;
WAVELET_NAME = 'db4';
[C,L] = wavedec(DATA, N_LEVELS, WAVELET_NAME);
A2 = wrcoef('a', C, L, WAVELET_NAME, 2);
D2 = wrcoef('d', C, L, WAVELET_NAME, 2);
D1 = wrcoef('d', C, L, WAVELET_NAME, 1);
A2+D2+D1
ans =
0.0000 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000
Je voudrais obtenir la même chose en utilisant pywt, mais je ne suis pas sûr de savoir comment s'y prendre. La fonction pywt.waverec
crée une reconstruction complète, mais n'a pas de paramètre de niveau pour la reconstruction partielle. La fonction pywt.upcoef
fait ce que je besoin d'un seul niveau mais je ne suis pas sûr de savoir comment étendre ce pour plusieurs niveaux:
>>> import pywt
>>> data = [1,2,3,4,5,6]
>>> (cA, cD) = pywt.dwt(data, 'db2', 'smooth')
>>> n = len(data)
>>> pywt.upcoef('a', cA, 'db2', take=n) + pywt.upcoef('d', cD, 'db2', take=n)
array([ 1., 2., 3., 4., 5., 6.])