Contenuto principale

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

Trasformata wavelet continua e trasformata wavelet continua inversa

Questo esempio mostra come utilizzare la trasformata wavelet continua (CWT) e la CWT inversa.

CWT di onde sinusoidali e impulsi

Creare e tracciare un segnale costituito da due onde sinusoidali disgiunte con frequenze di 100 e 50 Hz, punteggiate da due impulsi. La frequenza di campionamento è di 1 kHz e la durata totale del segnale è di un secondo. L’onda sinusoidale a 100 Hz si verifica nei primi 250 millisecondi dei dati. L’onda sinusoidale a 50 Hz si verifica negli ultimi 500 millisecondi. Gli impulsi si verificano a 650 e 750 millisecondi. Il segnale presenta anche un rumore gaussiano bianco additivo N(0,0.12). L'impulso a 650 millisecondi è visibile, ma l'impulso a 750 millisecondi non è chiaramente evidente nei dati nel dominio del tempo.

Fs = 1000;
t = 0:1/Fs:1-1/Fs;
x = zeros(size(t));
x([625,750]) = 2.5;
x = x+ cos(2*pi*100*t).*(t<0.25)+cos(2*pi*50*t).*(t>=0.5)+...
    0.1*randn(size(t));
plot(t.*1000,x)
grid on;
xlabel('msec'); ylabel('Amplitude');

Figure contains an axes object. The axes object with xlabel msec, ylabel Amplitude contains an object of type line.

Ottenere e tracciare la CWT utilizzando la wavelet analitica predefinita di Morse.

[cfs,f] = cwt(x,1000);
contour(t.*1000,f,abs(cfs));
xlabel('msec'); ylabel('Hz');
grid on;

Figure contains an axes object. The axes object with xlabel msec, ylabel Hz contains an object of type contour.

I moduli CWT mostrano correttamente i supporti delle sinusoidi disgiunte e le posizioni degli impulsi a 650 e 750 millisecondi. Nei moduli CWT, l'impulso a 750 millisecondi è chiaramente visibile. Questo è particolarmente vero se si tracciano solo i coefficienti wavelet della scala più precisa.

plot(t.*1000,abs(cfs(1,:)))
grid on
title('Fine-Scale Wavelet Coefficient Moduli')
xlabel('msec')

Figure contains an axes object. The axes object with title Fine-Scale Wavelet Coefficient Moduli, xlabel msec contains an object of type line.

CWT inversa localizzata in frequenza

Utilizzando la CWT inversa è possibile costruire approssimazioni localizzate in frequenza sugli eventi della serie temporale. Utilizzare la CWT inversa per ottenere un'approssimazione della sinusoide a 100 Hz dell'esempio precedente.

xrec = icwt(cfs,[],f,[90 110]);
plot(t,x);
hold on;
plot(t,xrec,'r');
legend('Original Signal','Inverse CWT Approximation',...
    'Location','NorthEast');
grid on;

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original Signal, Inverse CWT Approximation.

Se si ingrandisce il grafico, è possibile notare che il componente a 100 Hz è ben approssimato mentre il componente a 50 Hz è stato rimosso.