2015-12-16 15 views
5

Ich suche nach einer Methode, um Freak-Werte aus dem gegebenen Datensatz zu eliminieren. Zum Beispiel:Matlab: Beseitigung von Freak-Werten im Datensatz

Dataset to be filtered

Alle diese Spitzen sollten beseitigt werden. Ich habe verschiedene Filter wie medfilt ausprobiert, aber die Spitzen sind noch dort. Ich habe auch einen Tiefpassfilter ausprobiert, aber es hat auch nicht funktioniert. Ich bin ein Anfänger im Filtern von Signalen, also habe ich es wahrscheinlich falsch gemacht.

Sie können Datensätze für die x array here und y array here herunterladen.

Ich könnte mir auch eine Schleife vorstellen, um die Werte nebeneinander zu vergleichen, aber ich bin mir sicher, dass es eine eingebaute Funktion geben muss?

Hier ist das Ergebnis mit medfilt1(input,15):

filtered signal

Die Spitzen verschwinden, aber die dann bekomme ich diese hässlichen Schritte, die ich nicht will.

+5

Eine einfache Methode besteht darin, Ihre Daten zu vergleichen und festzustellen, wo die Wertänderung einen bestimmten Schwellenwert überschreitet. – excaza

+5

[This] (http://i.stack.imgur.com/IdJsU.jpg) ist, was ich assoziierte, wenn ich "freak values ​​in dataset" las. –

+0

Haha Andras, eigentlich habe ich nur das deutsche Wort übersetzt und ich habe "freak values" = D excaza, du meinst also gerne die Daten durchforsten, nach einem bestimmten diff suchen und es eliminieren? Ich hatte diese Idee auch, aber ich dachte, dass es eine eingebaute Funktion geben könnte ... – deSteini

Antwort

7

Verwenden Sie einfach den Medianfilter! medfilt1(data,3) wird tun, wenn das eine 1 Pixel "kosmische" Spitze ist. Wenn die Spitzen bleiben, erhöhen Sie die Fenstergröße auf 5 oder mehr ...

EDIT: so ist dies, wie op Daten wie folgt aussieht:

enter image description here So sehen wir, dass die Daten nicht genau einheitlich ist oder bestellt, und es gibt eine Menge Datenpunkte in den Spikes im Gegensatz zu dem, was man zuerst von der Frage versteht (Leute bitte stellen Sie Ihre Daten richtig dar!) Die Frage ist jetzt, sind die Daten in den Spikes oder in der Baseline?

+0

Ich habe die Funktion medfilt1 erneut versucht, aber ich brauche mindestens 15, um die meisten Spitzen wegzubekommen, aber anstatt die Spitzen zu eliminieren, bekomme ich Schritte in der Grafik ... Ich werde die Grafik in der Frage hinzufügen ... – deSteini

+0

besser noch, geben Sie einen Link zu den Daten selbst in .mat Datei – bla

+0

Ich habe es .. thx! – deSteini

Verwandte Themen