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
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')
Vérifiez que psi
satisfait la définition d'une ondelette en confirmant qu'elle s'intègre à zéro et que sa norme 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.