Matlab - Signal-Rauschen Entfernen
Ich habe einen Vektor, der die Daten enthält Ganzzahlen im Bereich von -20 20.
Balg ist ein Diagramm mit den Werten:
Dies ist ein Beispiel von 96 Elementen aus den Vektor-Daten. Die meisten Elemente liegen im Intervall -2, 2, wie Sie sehen können aus den oben genannten Grundstück.
Möchte ich beseitigen, das Rauschen aus den Daten. Ich will zu beseitigen, die geringe amplitude peaks, und halten Sie die high peak amplitude, nämlich Gipfel, wie wir Sie bei index 74.
Im Grunde, ich will einfach nur, um den Kontrast zu erhöhen, der zwischen den hohen amplitude peaks und peaks niedriger amplitude, und wenn es möglich wäre, zur Beseitigung der niedrigen amplitude peaks.
Könnten Sie bitte empfehlen Sie mir einen Weg, dies zu tun?
Habe ich versucht mapstd
- Funktion, aber das problem ist, dass es auch normalisiert, dass eine hohe amplitude peak.
Dachte ich, die Verwendung der wavelet-Transformation toolbox, aber ich weiß nicht genau, wie Sie rekonstruieren die Daten aus der wavelet-ZERLEGUNG Koeffizienten.
Können Sie mir empfehlen ein Weg, dies zu tun?
- "Normalisieren" bedeutet in der Regel "Linear skalieren, so dass das maximum in [-1 1]". Dies ändert nichts an der relativen Werte der peak-und der low-amplitude data. Wenn Sie sagen, Sie wollen zu beseitigen, die geringe amplitude peaks, meinst du, dass Sie möchten, erhöhen Sie den Kontrast zwischen dem signal und Rauschen?
- Ja, genau. Ich möchte nur zu beseitigen, das Rauschen aus dem signal.
- Sie müssen, um eine nicht-lineare Funktion, allgemein bekannt als "dead-band" - effektiv, Sie setzen Sie einfach alle Werte, deren Größe kleiner ist als ein vorgegebener Schwellenwert auf null.
- Gibt es eine Art Beispiel für diese oder eine matlab-toolbox/Funktion?
- Ich denke, dass ich getan haben, die ordnungsgemäße Bearbeitung der Frage, so dass es wäre mehr klar.
- Also, was Sie wollen, ist die Anwendung eines standard-high-pass-filter, wenn ich Sie richtig verstehe?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es für demonstrative Zwecke nur, und du bist nicht wirklich dabei, diese skalierten Werte für alles, was, die ich manchmal gerne erhöhen den Kontrast in der folgenden Weise:
edit: da wir Bilder bereitstellen, hier ist meins (vor/nach):
Data = Data .* logb(Data, abs(mean(Data) + 2 * std(Data)))
, wobei das zweite argument derlogb
- Funktion ist der Logarithmus Basis. Grundsätzlich alle Elemente, die zwischenmean
undmean + 2 * std
reduziert und all die anderen erhöht werden, indem der Logarithmus Faktor. Was wissen Sie über diese denken?Ein Ansatz zum erkennen von Ausreißern ist die Verwendung der drei Standardabweichung Regel. Ein Beispiel:
EDIT:
Es scheint, dass ich falsch verstanden hier das Ziel. Wenn Sie wollen, um das Gegenteil zu tun, vielleicht so etwas wie dies:
Könnten Sie versuchen, eine split-Fenster-filter. Wenn x die aktuelle Stichprobe, die filter würde etwa so Aussehen:
Für jedes Muster x, das Sie Durchschnitt das band von umliegenden samples auf dem linken (L) und ein band von umliegenden Proben auf der rechten Seite. Wenn Ihre Proben sind positiv und negativ (wie Ihriger sind) Sie sollten die abs. Wert erste. Sie teilen dann die Probe x der Durchschnittswert der umliegenden Proben.
Jedes mal, wenn Sie dies tun, die Spitzen akzentuiert werden, und der Lärm reduziert. Sie können mehr tun, als einen pass um den Effekt zu erhöhen. Es ist etwas empfindlich auf die Auswahl der Breite von diesen bands, aber arbeiten kann. Zum Beispiel:
Zwei Pässe:
k
, was die Nullen repräsentieren? Hat dieser Algorithmus einen Namen haben?Was Sie eigentlich brauchen, ist eine Art der Komprimierung, skalieren Sie Ihre Daten, das heißt: Werte zwischen -2 und 2 Skalierung um einen bestimmten Faktor und alles andere wird skaliert, indem ein weiterer Faktor. Eine grobe Art und Weise, so etwas zu erreichen, ist, indem Sie alle kleine Werte um null, d.h.
Bitte nicht, dass dies ist eine nichtlineare operation (z.B. wenn Sie wollte peaks geschätzt bei 2,1 und 1,9, die Sie produzieren, sehr unterschiedlich Verhalten: der eine entfernt werden, der andere wird gehalten). Also für die Anzeige, kann dies alles, was Sie brauchen, für die weitere Verarbeitung, es könnte davon abhängen, was Sie versuchen zu tun.
Zur Beseitigung der niedrigen amplitude peaks, du wirst gleichsetzen, alle low amplitude signal zu Rauschen und zu ignorieren.
Wenn Sie irgendwelche apriori-wissen, einfach nur.
wenn das signal ein, dann
wobei X die max Größe erwartet von Ihrem Lärm.
Wenn Sie möchten, zu bekommen Lust, und finde dieses "on the fly" verwenden Sie dann kmeans 3. Es ist in der statistics-toolbox, hier:
http://www.mathworks.com/help/toolbox/stats/kmeans.html
Alternativ können Sie mit Otsu ' s Methode auf die absoluten Werte der Daten, und verwenden Sie das Zeichen zurück.
Beachten Sie, dass diese und jede andere Technik, die ich gesehen habe, auf diesen thread ist, vorausgesetzt, Sie tun den post-processing. Wenn Sie dabei sind, diese Verarbeitung in Echtzeit, die Dinge werden sich ändern müssen.