Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Nuova wavelet per la CWT

Questo esempio illustra come generare una nuova wavelet partendo da un modello.

Il principio per la progettazione di una nuova wavelet per la CWT consiste nell'approssimare un dato modello utilizzando l’ottimizzazione dei minimi quadrati sotto vincoli che conducano a una wavelet ammissibile ben adatta al rilevamento del modello utilizzando la trasformata wavelet continua[1].

Caricare un modello originale: uno pseudo-seno.

load ptpssin1
who
Your variables are:

IntVAL   X        Y        caption  

Le variabili X e Y contengono il modello. Integrare il modello sull'intervallo [0, 1]. Tracciare il modello.

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.

Il modello sull'intervallo [0, 1] si integra a 0,15915. Quindi, non si tratta di una wavelet, ma è un buon candidato poiché oscilla come una wavelet.

Per sintetizzare una nuova wavelet adatta al modello dato, utilizzare un'approssimazione polinomiale ai minimi quadrati di grado 6, con vincoli di continuità all'inizio e alla fine del modello.

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

La nuova wavelet è data da xval e 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.

Verificare che psi soddisfi la definizione di una wavelet, confermando che si integra a zero e la cui norma L2 è uguale a 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

Riferimenti

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

Vedi anche