Bonjour,
La librairie mlpy de Python comprend l'ondelette UWT et l'inverse IUWT.
Je souhaiterais connaître l'ordre de sortie des divers coefficients dans l'opération de décomposition.
La documentation de mlpy dit que cela donne :
X : 2d numpy array (2J * len(x))
misaligned scaling and wavelet coefficients:
[[wavelet coefficients W_1]
[wavelet coefficients W_2]
:
[wavelet coefficients W_J]
[scaling coefficients V_1]
[scaling coefficients V_2]
:
[scaling coefficients V_J]]
Ceci sème un doute dans mon esprit de débutant en la matière.
L'ordre habituel de sortie des coefficients est :
cAn,cDn,cAn-1,cDn-1, etc...
cA=Approximation ; cD=Detail
J'ai réalisé un test de transformation et d'inversion :
Test UWT avec Haar
>>> import numpy as np
>>> import mlpy.wavelet as wave
>>> x = np.array([0,1,2,3,4,5,6,7])
>>> wave.uwt(x=x, wf='h', k=2, levels=3)
array([[-3.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5],
[-1. , -3. , -1. , 1. , 1. , 1. , 1. , 1. ],
[ 1. , 0. , -1. , -2. , -1. , 0. , 1. , 2. ],
[ 3.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5],
[ 4.5, 3.5, 2.5, 1.5, 2.5, 3.5, 4.5, 5.5],
[ 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5]])
Avec level=3, on a bien 6 niveaux de coefficients.
J'ai fait l'inverse en considérant que l'ordre des niveaux était standard.
J'ai gardé une Approximation (la 1ère à gauche) et 3 détails.
>>> import numpy as np
>>> import mlpy.wavelet as wave
>>> X=np.array([[-3.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5],
[-1. , -3. , -1. , 1. , 1. , 1. , 1. , 1. ],
[ 3.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5],
[ 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5]])
>>> wave.iuwt(X=X, wf='h', k=2)
array([ 0., 1., 2., 3., 4., 5., 6., 7.])
Je retrouve donc bien la liste originale, mais je continue à avoir des doutes.
Mes doutes proviennent du fait que les Approximations ont en général des coefficients plus élevés que les Détails, si je ne me trompe.
Quelqu'un pourrait-il me rassurer et me dire l'ordre de sortie des coefficients?
Merci d'avance.
Ernest
Partager