Vergleichen von MODWT und MODWTMRA
In diesem Beispiel werden die Unterschiede zwischen MODWT und MODWTMRA veranschaulicht. Die MODWT verteilt die Energie eines Signals auf Detailkoeffizienten und Skalierungskoeffizienten. Die MODWTMRA projiziert ein Signal auf Wavelet-Subräume und einen Skalierungssubraum.
Wählen Sie das sym6
-Wavelet. Laden Sie ein EKG-Signal (Elektrokardiogramm) und stellen Sie es grafisch dar. Die Abtastfrequenz des EKG-Signals beträgt 180 Hertz. Die Daten stammen aus Percival und Walden (2000), Seite 125 (die Daten wurden ursprünglich von William Constantine und Per Reinhall, University of Washington, zur Verfügung gestellt).
load wecg t = (0:numel(wecg)-1)/180; wv = 'sym6'; plot(t,wecg) grid on title(['Signal Length = ',num2str(numel(wecg))]) xlabel('Time (s)') ylabel('Amplitude')
Verwenden Sie die MODWT des Signals.
wtecg = modwt(wecg,wv);
Die Eingabedaten sind Abtastwerte einer Funktion , die an Zeitpunkten ausgewertet wurde. Die Funktion kann als lineare Kombination der Skalierungsfunktion und des Wavelets bei variierenden Skalierungen und Translationen ausgedrückt werden: wobei und die Anzahl der Wavelet-Zerlegungsebenen ist. Die erste Summe ist die grobe Skalierungsapproximation des Signals und die sind die Details bei nachfolgenden Skalierungen. MODWT gibt die -Koeffizienten und die -Detailkoeffizienten der Ausdehnung zurück. Jede Zeile in wtecg
enthält die Koeffizienten bei einer anderen Skalierung.
Bei Ermittlung der MODWT eines Signals der Länge gibt es standardmäßig Zerlegungsebenen. Auf jeder Ebene werden Detailkoeffizienten erzeugt. Skalierungskoeffizienten werden nur für die letzte Ebene zurückgegeben. In diesem Beispiel gilt: , . Die Anzahl der Zeilen in wtecg
beträgt .
Die MODWT partitioniert die Energie über die verschiedenen Skalierungen und Skalierungskoeffizienten: wobei die Eingabedaten sind, die Detailkoeffizienten bei Skalierung sind und die Skalierungskoeffizienten der letzten Ebene sind.
Berechnen Sie die Energie für jede Skalierung und werten Sie die Summe aus.
energy_by_scales = sum(wtecg.^2,2); Levels = {'D1';'D2';'D3';'D4';'D5';'D6';... 'D7';'D8';'D9';'D10';'D11';'A11'}; energy_table = table(Levels,energy_by_scales); disp(energy_table)
Levels energy_by_scales _______ ________________ {'D1' } 14.063 {'D2' } 20.612 {'D3' } 37.716 {'D4' } 25.123 {'D5' } 17.437 {'D6' } 8.9852 {'D7' } 1.2906 {'D8' } 4.7278 {'D9' } 12.205 {'D10'} 76.428 {'D11'} 76.268 {'A11'} 3.4192
energy_total = varfun(@sum,energy_table(:,2))
energy_total=table
sum_energy_by_scales
____________________
298.28
Bestätigen Sie, dass MODWT eine energieerhaltende Transformation ist, indem Sie die Energie des Signals berechnen und mit der Summe der Energien für alle Skalierungen vergleichen.
energy_ecg = sum(wecg.^2); max(abs(energy_total.sum_energy_by_scales-energy_ecg))
ans = 7.4402e-10
Verwenden Sie die MODWTMRA des Signals.
mraecg = modwtmra(wtecg,wv);
MODWTMRA gibt die Projektionen der Funktion auf die verschiedenen Wavelet-Subräume und den letzten Skalierungsraum zurück. Das heißt, dass MODWTMRA und das -Vielfache , ausgewertet an Zeitpunkten zurückgibt. Jede Zeile in mraecg
ist eine Projektion von auf einen anderen Subraum. Dies bedeutet, dass das Originalsignal durch Addition aller Projektionen wiederhergestellt werden kann. Dies trifft für MODWT nicht zu. Durch Addieren der Koeffizienten in wtecg
wird das Originalsignal nicht wiederhergestellt.
Wählen Sie einen Zeitpunkt, addieren Sie die Projektionen von , die an diesem Zeitpunkt ausgewertet wurden, und vergleichen Sie das Ergebnis mit dem Originalsignal.
time_point = 1000; abs(sum(mraecg(:,time_point))-wecg(time_point))
ans = 3.0846e-13
Bestätigen Sie, dass MODWTMRA im Gegensatz zu MODWT keine energieerhaltende Transformation ist.
energy_ecg = sum(wecg.^2); energy_mra_scales = sum(mraecg.^2,2); energy_mra = sum(energy_mra_scales); max(abs(energy_mra-energy_ecg))
ans = 115.7053
Bei MODWTMRA handelt es sich um eine Null-Phasen-Filterung des Signals. Merkmale sind zeitlich abgestimmt. Zeigen Sie dies, indem Sie das Originalsignal und eine seiner Projektionen grafisch darstellen. Zur besseren Veranschaulichung der Abstimmung vergrößern Sie die Darstellung.
plot(t,wecg,'b') hold on plot(t,mraecg(4,:),'-') hold off grid on xlim([4 8]) legend('Signal','Projection','Location','northwest') xlabel('Time (s)') ylabel('Amplitude')
Erstellen Sie ein ähnliches Diagramm unter Verwendung der MODWT-Koeffizienten bei derselben Skalierung. Die Merkmale sind nicht zeitlich abgestimmt. Bei MODWT handelt es sich nicht um eine Null-Phasen-Filterung der Eingabe.
plot(t,wecg,'b') hold on plot(t,wtecg(4,:),'-') hold off grid on xlim([4 8]) legend('Signal','Coefficients','Location','northwest') xlabel('Time (s)') ylabel('Amplitude')
Referenzen
[1] Percival, D. B., and A. T. Walden. Wavelet Methods for Time Series Analysis. Cambridge, UK: Cambridge University Press, 2000.