Main Content

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

Nouvelle ondelette pour la CWT

Cet exemple illustre comment générer une nouvelle ondelette à partir d'un motif.

Le principe de la conception d'une nouvelle ondelette pour la CWT est d'approximer un motif donné en utilisant l'optimisation des moindres carrés sous contraintes conduisant à une ondelette admissible bien adaptée à la détection de motifs à l'aide de la transformée en ondelettes continue [1].

Chargez un motif original : une pseudo-sinusoïde.

load ptpssin1
who
Your variables are:

IntVAL   X        Y        caption  

Les variables X et Y contiennent le motif. Intégrez le motif sur l'intervalle [0, 1]. Tracez le motif.

dX = max(diff(X));
patternInt = dX*sum(Y);
disp(['Integral of pattern = ',num2str(patternInt)]);
Integral of pattern = 0.15915
plot(X,Y)
title('Original Pattern')
grid on

Figure contains an axes object. The axes object with title Original Pattern contains an object of type line.

Le motif sur l'intervalle [0, 1] s'intègre à 0,15915. Ce n'est donc pas une ondelette mais c'est un bon candidat puisqu'il oscille comme une ondelette.

Pour synthétiser une nouvelle ondelette adaptée au motif donné, on utilise une approximation polynomiale des moindres carrés de degré 6 avec des contraintes de continuité au début et à la fin du motif.

[psi,xval,nc] = pat2cwav(Y, 'polynomial',6, 'continuous');

La nouvelle ondelette est donnée par xval et nc*psi.

figure
plot(X,Y,'-',xval,nc*psi,'--')
grid on
legend('Original Pattern','Adapted Wavelet','Location','NorthWest')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original Pattern, Adapted Wavelet.

Vérifiez que psi satisfait la définition d'une ondelette en confirmant qu'elle s'intègre à zéro et que sa norme L2 est égale à 1.

dxval = max(diff(xval));
newWaveletIntegral = dxval*sum(psi);
disp(['Integral of new wavelet = ',num2str(newWaveletIntegral)])
Integral of new wavelet = 1.9626e-05
newWaveletSqN = dxval*sum(psi.^2);
disp(['New wavelet has L2-norm = ',num2str(newWaveletSqN)])
New wavelet has L2-norm = 1

Références

[1] Misiti, M., Y. Misiti, G. Oppenheim, and J.-M. Poggi. Les ondelettes et leurs applications. France: Hermes Science/Lavoisier, 2003.

Voir aussi