Wavelet-Skalogramm interpretieren


8

Mein Wissen über Wavelets ist weniger als Epsilon. Trage es mit mir. Wenn ich ein Signal von zwei gut getrennten Sinuskurven (15 und 48 Hz) plus zufälligem Rauschen habe, kann ich die beiden in einem Spektrogramm (die beiden Streifen in meinem Bild) deutlich erkennen.

t=0:0.002:1;   % fs = 500 Hz
x=4*sin(2*pi*15*t)+2*cos(2*pi*48*t);
xn = x + randn(size(x));
figure(1);
plot(xn);
figure(2);
spectrogram(xn, 64, 60, [], 500);

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Aber mit 'wscalogram' kann ich nicht sagen, dass ich die Komponenten unterscheiden kann:

    coefs = cwt(xn,1:64,'db8','scalCNT');
    wscalogram('image',coefs,'scales',1:64,'ydata',xn);

Geben Sie hier die Bildbeschreibung ein

Gibt es eine Möglichkeit, aus dem Skalogramm zu lesen, dass es zwei verschiedene Sinuskurven gibt, und wenn ja, wie kann ich sie durch Wavelet-Zerlegung und -Filterung trennen? Ich dachte, dass meine Wahl des Wavelets ('db8') vielleicht nicht optimal ist, aber ich kann keinen großen Unterschied bei der Verwendung anderer Typen und einer größeren (oder kleineren) Anzahl von Skalen feststellen. Offensichtlich fehlt mir etwas darüber, wo und wann und worauf Wavelets angewendet werden sollen.

Vielen Dank


Ich würde gerne wissen, was die y-Achse bedeutet. Wem kann ich die Frequenz auf der y-Achse im Wavelet-Skalogramm ablesen?
Nader Rachid

Antworten:


3

Wavelets sind ideal für lokalisierte Veranstaltungen. Die Fourier-Transformation repräsentiert eine Funktion als Summe von Sinus und Cosinus, von denen keiner lokalisiert ist. Das Spektrogramm speichert einige Zeitinformationen auf Kosten der Frequenzauflösung

In Ihrem Fall ist das Signal überhaupt nicht lokalisiert. Das Spektrogramm verschmiert Ihr 15-Hz-Band über mehrere Hz, da es einige Zeitinformationen erfasst und das Skalogramm auf Hochtouren fehlschlägt.


1

Ja, Ihnen fehlt etwas :) Obwohl Sie verschiedene Wavelet-Familien ausprobiert haben, sollten Sie die verwenden GaborWavelet. Ich habe dies geschrieben Mathematica, aber Sie können es in jeder gewünschten Umgebung tun.

cwd = ContinuousWaveletTransform[Table[4 Sin[2 Pi 15 t] + 2 Cos[2 Pi 48 t] +   
               RandomReal[{-.5, .5}], {t, 0, 5 \[Pi], .01}], GaborWavelet[]]

WaveletScalogram[cwd, ColorFunction -> "RoseColors"]

Mathematica-Grafiken


2
Der Grund für die Bevorzugung eines GaborWaveletsollte hier erklärt werden.
Serge Stroobandt
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.