Main Content

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

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')

Figure contains an axes object. The axes object with title Signal Length = 2048 contains an object of type line.

Verwenden Sie die MODWT des Signals.

wtecg = modwt(wecg,wv);

Die Eingabedaten sind Abtastwerte einer Funktion f(x), die an N Zeitpunkten ausgewertet wurde. Die Funktion kann als lineare Kombination der Skalierungsfunktion ϕ(x) und des Wavelets ψ(x) bei variierenden Skalierungen und Translationen ausgedrückt werden: f(x)=k=0N-1ck2-J0/2ϕ(2-J0x-k)+j=1J0fj(x), wobei fj(x)=k=0N-1dj,k2-j/2ψ(2-jx-k) und J0 die Anzahl der Wavelet-Zerlegungsebenen ist. Die erste Summe ist die grobe Skalierungsapproximation des Signals und die fj(x) sind die Details bei nachfolgenden Skalierungen. MODWT gibt die N-Koeffizienten {ck} und die (J0×N)-Detailkoeffizienten {dj,k} 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 N, gibt es standardmäßig floor(log2(N)) Zerlegungsebenen. Auf jeder Ebene werden Detailkoeffizienten erzeugt. Skalierungskoeffizienten werden nur für die letzte Ebene zurückgegeben. In diesem Beispiel gilt: N=2048, J0=floor(log2(2048))=11,. Die Anzahl der Zeilen in wtecg beträgt J0+1=11+1=12.

Die MODWT partitioniert die Energie über die verschiedenen Skalierungen und Skalierungskoeffizienten: ||X||2=j=1J0||Wj||2+||VJ0||2, wobei X die Eingabedaten sind, Wj die Detailkoeffizienten bei Skalierung j sind und VJ0 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 f(x) auf die verschiedenen Wavelet-Subräume und den letzten Skalierungsraum zurück. Das heißt, dass MODWTMRA k=0N-1ck2-J0/2ϕ(2-J0x-k) und das J0-Vielfache {fj(x)}, ausgewertet an N Zeitpunkten zurückgibt. Jede Zeile in mraecg ist eine Projektion von f(x) 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 f(x), 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')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Signal, Projection.

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')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Signal, Coefficients.

Referenzen

[1] Percival, D. B., and A. T. Walden. Wavelet Methods for Time Series Analysis. Cambridge, UK: Cambridge University Press, 2000.

Siehe auch

|