Lesen des Wavelet-Transformationsplots


15

Ich habe Probleme zu verstehen, wie die von einer Wavelet-Transformation geplottete Handlung zu lesen ist.

Hier ist mein einfacher Matlab-Code.

load noissin;
% c is a 48-by-1000 matrix, each row 
% of which corresponds to a single scale.
c = cwt(noissin,1:48,'db4','plot');

Bildbeschreibung hier eingeben

Der hellste Teil bedeutet also, dass die Größe des Maßstabs größer ist, aber wie genau kann ich diese Handlung verstehen, was dort passiert? Bitte hilf mir.


Ich habe versucht, folgenden Code in Matlab t = 0: 0,001: 2; y = sin (2 · pi · 20 · t) wname = "cmor0,5-1" Maßstab = 1: 0,1: 80; cwt (y, scale, wname, 'plot'); Ich habe folgende Handlung! Bildbeschreibung hier eingeben Real- und Imaginärteil mit Lücken, die bei CWT mit Morl Wavelet beobachtet werden. In gewisser Weise enthält CWT mit komplexem Morlet-Wavelet auch Phaseninformationen. Wie erklärt man das?

Antworten:


15

Stellen Sie sich für eine Sekunde vor, Sie hätten gerade Ihr Daubechies-4- Wavelet gezeichnet , wie Sie hier in Rot sehen können.

Bildbeschreibung hier eingeben

Stellen Sie sich nun vor, Sie nehmen diese Wellenform in Rot und führen einfach eine Kreuzkorrelation mit Ihrem Signal durch. Sie zeichnen dieses Ergebnis. Dies ist die erste Reihe Ihres Grundstücks. Dies ist Maßstab 1. Als Nächstes erweitern Sie Ihr Daubechies-4-Wavelet (dh Sie lassen es einfach um einen Faktor in der Zeit „dehnen“). Anschließend führen Sie erneut eine Kreuzkorrelation dieser neuen Wellenform mit Ihrem Signal durch. Sie erhalten dann die zweite Reihe Ihres Grundstücks. Das ist Skala-2. Sie tun dies für alle Skalen, dh, Sie nehmen weiterhin Ihr ursprüngliches 'Mutter'-Wavelet und Sie weiten sich weiter aus, dann überkorrelieren, erweitern und überkorrelieren usw., und Sie zeichnen die Ergebnisse einfach oben auf Andere.

Dies zeigt Ihnen das CWT-Diagramm. Die Ergebnisse einer Kreuzkorrelation Ihres Signals mit einem Wavelet in verschiedenen Maßstäben, dh bei verschiedenen Dehnungsfaktoren.

Lassen Sie uns Ihr Bild interpretieren. In der ersten Zeile sehen Sie, dass Ihre Kreuzkorrelation schwache Amplituden aufweist. Das bedeutet, dass es Ihnen sagt, dass fast nichts in Ihrem Signal mit Ihrem Wavelet korreliert (oder "übereinstimmt"), wenn es auf der Skala 1 ist (wenn es auf der kleinsten Skala ist). Sie dehnen Ihr Wavelet weiter und korrelieren, und dennoch stimmt es mit nichts in Ihrem Signal überein, bis Sie sagen, dass Sie Skala-31 erreichen. Wenn Sie also Ihr Wavelet 31-mal dehnen und eine Kreuzkorrelation durchführen, sehen Sie einige helle Flecken, was bedeutet, dass Sie gute Kreuzkorrelationswerte zwischen Ihrem gedehnten Wavelet und Ihrem Signal erhalten.

Wenn Sie jedoch ganz nach oben schauen, haben wir die hellsten Stellen. Für Skala-46 haben Sie diese Zeile erstellt, indem Sie Ihr ursprüngliches Wavelet 46-mal gedehnt und dann mit Ihrem Signal kreuzkorreliert haben. Dann ist dies Ihre Zeile-46. Sie sehen also viele schöne Lichtblicke. Sie können sehen, dass ich an den Positionen (x-Achse) ~ 25, ~ 190 und ~ 610 helle Flecken habe. Das heißt, Sie haben ein Merkmal in Ihrem Signal, das Ihrem 46-fach gedehnten Wavelet sehr nahe kommt . Sie haben also an den Stellen etwas, das Ihrem Wavelet in dieser Größenordnung genau entspricht.

(Natürlich haben Sie in Ihrem Fall Rauschen verwendet, daher sind die Positionen, über die ich gesprochen habe, zufällig - das heißt, es ist nichts wirklich 'Interessantes' im Gange. Führen Sie eine CWT mit einem Sinuspuls durch und was ich sage kann klarer gemacht werden.)

Zusammenfassend zeigt die CWT einfach alle möglichen Korrelationswerte zwischen Ihrem Template / Matched Filter (in diesem Fall Daub-4 Wavelet) an verschiedenen Positionen (X-Achse), auch bei verschiedenen Streckungsfaktoren (Y-Achse). .

Hoffe das hat geholfen.


Vielen Dank, das hat wirklich geholfen, aber wie können Sie sagen, dass ich durch diesen Vorgang die Frequenz und die Zeit meines Signals herausgefunden habe?
Sufiyan Ghori

1
@Effected Sie haben die "Zeit" des Auftretens eines Merkmals in Ihrem Signal ermittelt, anhand derer Sie maximale Korrelationswerte erhalten. (Beispiel: ~ 25, ~ 190, ~ 610) in Ihrem Beispiel. Um den Frequenzinhalt Ihres Signals an diesem Punkt zu erhalten, können Sie sich einfach die FFT dieses Teils Ihres Signals ansehen. ODER Sie können sich die FFT Ihres Wavelets auf dieser Skala ansehen und den Frequenzgang.
Spacey

Nehmen wir also an, wir nehmen DCT nach Wavelet, um sowohl Zeit- als auch Frequenzkomponenten zu haben? Wenn ich eine Sinuswelle habe (x-Achse = Zeit, y-Achse = Amplitude) und wenn ich ihre FFT nehme, dann habe ich Frequenzkomponenten aus der FFT und Zeitkomponenten aus dem ursprünglichen Signal, warum nehmen wir dann an, Wavelet zu verwenden?
Sufiyan Ghori

1
@Effected Der Grund, warum Sie DFT / DCT verwenden, besteht darin, globalen Frequenzinhalt abzurufen . DFT / DCT gibt Ihren Frequenzinhalt für das gesamte Signal an. Wo ist eine bestimmte Frequenz in der Zeit? Sie wissen es nicht. Wenn Sie jedoch Wavelets verwenden, können Sie nicht nur herausfinden, wie hoch Ihre Frequenz ist (ähnlich wie bei DFT / DCT), sondern auch, wo Sie diese Frequenz haben. (Ort in der Zeit).
Spacey

Für die Aufzeichnung existiert Frequenz nur als globales Konzept. Sobald Sie versuchen, die Frequenz auf einen bestimmten Zeitraum zu beschränken, sprechen Sie wirklich von einer Häufigkeitsverteilung. Die Verteilung wird mit zunehmender Zeitspanne oder Skala enger. Wenn Sie die DFT von Wavelets mit unterschiedlichen Maßstäben berechnen, erhalten Sie eine Vorstellung davon, wie die zugehörigen Transformationsergebnisse in den Frequenzbereich zurückinterpretiert werden können. Bandpassfilter denken. Das Morlet-Wavelet hat zufällig eine schöne Gaußsche Häufigkeitsverteilung, die sich gut für die Rückbeziehung auf Fourier-Konzepte eignet. @endolith hat dies in seiner Antwort angesprochen.
user2718

11

Diese Handlungen waren hilfreich für mich zu verstehen, da sie aus einem STFT- Hintergrund stammen:

Das komplexe Morlet-Wavelet (sinusförmig) sieht aus und verhält sich wie der komplexe Kernel einer STFT (da er von der Gabor-Transformation abgeleitet ist , einer Art von STFT). Wenn Sie es an einem Signal mit derselben Frequenz "vorbeischieben", stimmt es unabhängig von der Phase des gemessenen Signals überein und erzeugt an jedem Punkt eine Größen- und Phasenmessung (und dies ist nur eine Auftragung der Größe):

Größe der komplexen Morlet-Wavelet-Transformation

Magnitudenplot der komplexen Morlet-Wavelet-Transformation

Das realwertige Morlet-Wavelet stimmt nur überein, wenn die Phasen des Wavelets und des Signals in einer Linie liegen. Wenn Sie es also an dem von Ihnen gemessenen Signal vorbeischieben, wird es phasenverschoben und erzeugt Maxima und Minima, wenn sie sich aufheben oder verstärken:

Größe der kontinuierlichen Real-Morlet-Wavelet-Transformation

Größe der kontinuierlichen Real-Morlet-Wavelet-Transformation

(In diesem Fall zeichnen wir die Größe auf, sodass sowohl die positiven als auch die negativen Übereinstimmungen orangefarbene Punkte ergeben. Es ist besser, stattdessen auf eine bipolare Farbkarte zu wechseln , um zu zeigen, dass einige Peaks in Phase und andere nicht in Phase sind.) :

Kontinuierliche echte Morlet-Wavelet-Transformation unter Verwendung einer bipolaren Farbkarte

Kontinuierliche echte Morlet-Wavelet-Transformation unter Verwendung einer bipolaren Farbkarte

Mit dem realwertigen Morlet werden die Größen- und Phaseninformationen zu einem einzigen Ausgabewert kombiniert.

Die am häufigsten verwendeten Wavelets haben einen reellen Wert. Sie stimmen also nur überein, wenn die von Ihnen gemessene Welle und die von Ihnen getestete Welle in einer Linie liegen, was zu diesen Oszillationen oder Wellen im Skalogramm führt, wenn Sie aneinander vorbeischieben.


Woher haben Sie diese Pläne übrigens?
Spacey

@Mohammad: Oh, wenn Sie den Links folgen, habe ich mehr Informationen darüber, aber kurz gesagt, ich habe sie mit folgendem Code erstellt: phy.uct.ac.za/courses/python/examples/…
endolith

Link ist tot, jetzt sind sie bei github.com/emanuele/cwt oder gist.github.com/endolith/2783866
Endolith

1
Sehr schön! Ich beschloss, etwas über Wavelets zu lernen, googelte und innerhalb von fünf Minuten kehrte ich zu einer gut geschriebenen Antwort der "Aha!" - Klasse in das Stack-Exchange-Ökosystem zurück. Dies ist eine gut ausgewählte, minimale Sammlung von Bildern. Vielen Dank!
uhoh

4

Dies ist das Beispiel, von dem ich denke, dass es das beste ist, um die Wavelet-Handlung zu verstehen.

Schauen Sie sich das Bild unten an. Die Wellenform (A) ist unser ursprüngliches Signal. Die Wellenform (B) zeigt ein Wavelet von Daubechies 20 (Db20) mit einer Länge von etwa 1/8 Sekunde, das am Anfang beginnt (t = 0) und effektiv gut endet vor 1/4 Sekunde. Die Nullwerte werden auf die volle 1 Sekunde verlängert. Der Punkt-für-Punkt-Vergleich * mit unserem Impulssignal (A) ist sehr schlecht und wir erhalten einen sehr kleinen Korrelationswert.

Wir verschieben zuerst das ungedehnte Basis- oder Mutter-Wavelet leicht nach rechts und führen einen weiteren Vergleich des Signals mit dieser neuen Wellenform durch, um einen anderen Korrelationswert zu erhalten. Wir verschieben uns weiter und wenn sich das Db20-Wavelet in der in (C) gezeigten Position befindet, erhalten wir einen etwas besseren Vergleich als mit (B), aber immer noch sehr schlecht, da (C) und (A) unterschiedliche Frequenzen sind.

Nachdem wir das Wavelet bis zum Ende des 1-Sekunden-Zeitintervalls verschoben haben, beginnen wir erneut mit einem leicht gedehnten Wavelet und verschieben uns wiederholt nach rechts, um einen weiteren vollständigen Satz dieser Korrelationswerte zu erhalten. Die Wellenform (D) zeigt das Db20-Wavelet, das bis zu einer Frequenz gedehnt wurde, die ungefähr der des Impulses (A) entspricht, und nach rechts verschoben, bis die Spitzen und Täler recht gut ausgerichtet sind. Bei diesen besonderen Verlagerungs- und Streckungsbeträgen sollten wir einen sehr guten Vergleich und einen großen Korrelationswert erhalten. Eine weitere Verschiebung nach rechts führt jedoch auch bei dieser Dehnung zu immer schlechteren Korrelationen. Weiteres Strecken hilft überhaupt nicht, da der Puls und das überdehnte Wavelet selbst in einer Reihe nicht die gleiche Frequenz haben.

Bildbeschreibung hier eingeben

In der CWT haben wir einen Korrelationswert für jede Verschiebung jedes gestreckten Wavelets. † Um die Korrelationswerte (Qualität der „Übereinstimmung“) für all diese Strecken und Verschiebungen anzuzeigen, verwenden wir eine 3D-Anzeige.

Hier kommt's,

Bildbeschreibung hier eingeben

Die hellen Punkte zeigen an, wo die Spitzen und Täler des gedehnten und verschobenen Wavelets am besten mit den Spitzen und Tälern des eingebetteten Pulses übereinstimmen (dunkel, wenn keine Ausrichtung vorliegt, dunkler, wenn nur einige Spitzen und Täler aneinandergereiht sind, aber am hellsten, wenn alle Spitzen und Täler übereinstimmen ausrichten). In diesem einfachen Beispiel ergab das Dehnen des Wavelets um den Faktor 2 von 40 auf 20 Hz (Dehnen des Filters von den ursprünglichen 20 auf 40 Punkte) und Verschieben um 3/8 Sekunden die beste Korrelation und stimmte mit dem überein, was wir wussten a priori oder "up front" um den Puls (Puls zentriert bei 3/8 Sekunde, Pulsfrequenz 20 Hz).

Wir haben das Wavelet Db20 gewählt, da es dem Impulssignal ein wenig ähnelt. Wenn wir a priori nicht wüssten, wie das Ereignis aussieht, könnten wir mehrere Wavelets (einfach in der Software umschaltbar) ausprobieren, um zu ermitteln, welche eine CWT-Anzeige mit den hellsten Flecken ergab (was die beste Korrelation anzeigt). Dies würde uns etwas über die Form der Veranstaltung erzählen.

Im obigen einfachen Tutorial-Beispiel hätten wir den Ort und die Frequenz des Impulses (A) visuell erkennen können. Das nächste Beispiel ist etwas repräsentativer für Wavelets in der realen Welt, in der Ort und Frequenz mit bloßem Auge nicht sichtbar sind.

Siehe das Beispiel unten,

Bildbeschreibung hier eingeben

Mit Wavelets können lokale Ereignisse analysiert werden. Wir konstruieren ein langsam variierendes Sinuswellensignal mit 300 Punkten und fügen zur Zeit = 180 einen winzigen „Störimpuls“ oder eine Diskontinuität (in der Steigung) hinzu. Wir würden den Störimpuls nicht bemerken, wenn wir nicht die Nahaufnahme betrachten (b).

Nun wollen wir sehen, wie FFT diesen Fehler anzeigt. Bildbeschreibung hier eingeben

Die niedrige Frequenz der Sinuswelle ist leicht zu bemerken, aber der kleine Fehler ist nicht zu sehen.

Wenn wir jedoch CWT anstelle von FFT verwenden, wird dieser Fehler deutlich angezeigt. Bildbeschreibung hier eingeben

Wie Sie sehen können, zeigt das CWT-Wavelet-Display deutlich eine vertikale Linie zur Zeit = 180 und in kleinen Maßstäben. (Das Wavelet dehnt sich bei geringen Maßstäben nur sehr wenig aus, was darauf hinweist, dass der Störimpuls sehr kurz war.) Die CWT lässt sich auch gut mit der großen oszillierenden Sinuswelle vergleichen, die den Störimpuls verbirgt. Auf diesen höheren Skalen wurde das Wavelet gedehnt (auf eine niedrigere Frequenz) und "findet" so den Peak und das Tal der Sinuswelle zur Zeit = 75 und 225. Für diese kurze Diskontinuität verwendeten wir einen kurzen 4-Punkt-Db4 Wavelet (wie abgebildet) zum besten Vergleich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.