Hallo zusammen, ich würde bei einer Sensormesswertausgabe, bevor ich den Sensorwert an das Display übergebe, eine erhöhte Sicherheit einbringen, in dem ich den gemessenen Wert mit den vorher-gemessenen Wert vergleiche. Ich will dadurch verhindern, dass ein Ausreißer, der aufgrund des Messaufbaus leider vorkommen kann, ausgegeben wird. Ich bräuchte also einen Algorithmus, der im Prinzip den (die) vorhergehenden Wert(e) mit den aktuellen vergleicht, und dann erst ggf. die Ausgabe macht. Ein Mittelwert von Messungen o.ä. macht keinen Sinn, da die Ausreißer das Ergebis zu sehr verfälschen. Wie stellt man sowas an ? Mit welcher Methode speichere ich die vorher gemessen Sensorwerte und vergleiche dann den aktuellen damit ? Vielleicht kann mit jmd. ein paar Stichpunkte nennen ? Danke, Michael
Michael schrieb: > Vielleicht kann mit jmd. ein paar Stichpunkte nennen ? Stichworte: 3-Sigma-Korrektur. Ganz ganz alter Hut, aber wirksam. Georg
Im einfachsten fall ein Medianfilter, wie vorher schon erwähnt und sonst könnte man ein Kalmanfilter modellieren.
Mit dem Ausreißertest nach Grubbs habe ich gute Erfahrungen gemacht.
Das Erkennen von Ausreißern ist relativ leicht, wenn man sich die Daten HINTERHER anschaut. Du sagst aber nicht, ob du Messreihen erfassen willst, die später ausgewertet werden sollen, oder eine Überwachung von Betriebsparametern durchgeführt werden soll, die nicht auf Ausreißer über-reagieren soll. Hier zwei übliche Methoden, bei denen man sich nur den vorherigen Ausgabewert merken muss - oft reicht das: 1) Üblicherweise werden "verrauschte" Messwerte mit einer RC-Tiefpass-Nachbildung gefiltert. Von jedem neuen Messwert wird die Abweichung zum vorherigen Ausgabewert ermittelt. Diese Abweichung wird mit einem Faktor TP < 1.0 multipliziert. Das Ergebnis wird zum vorigen Ausgabewert addiert und als neuer Ausgabewert zur Anzeige gebracht. Damit werden Ausreißer gedämpft, aber die Anzeige hinkt dem realen Verlauf der Messwerte IMMER etwas hinterher. Liegen vielleicht Erfahrungen vor, wie groß die maximale Änderung der Messwerte pro Messzyklus (ohne Ausreißer) in 68% ... 96% der Fälle ist? (Hier kommt sigma ins Spiel.) - Nennen wir diesen Wert DMAX. 2) In diesem Fall kann man neue Messwerte, die sich (absolut) um weniger, als DMAX vom vorherigen Anzeigewert unterscheiden, unverändert durchlassen, während größere Änderungen mit passendem Vorzeichen auf alten Wert +/-DMAX begrenzt werden. Damit bleibt die Anzeige zeitlich nah am realen Messwert, während Ausreißer reduziert werden - und ECHTE (dauerhafte) Sprünge mit nur wenig Verzögerung sichtbar werden. Es geht natürlich auch aufwändiger...
Michael schrieb: > ich würde bei einer Sensormesswertausgabe, bevor ich den Sensorwert an > das Display übergebe, eine erhöhte Sicherheit einbringen, in dem ich > den gemessenen Wert mit den vorher-gemessenen Wert vergleiche. So ein Algorithmus hat lange Zeit die Entdeckung des Ozone-Loches über der Antarktis verhindert. Die Daten wurden in der ersten Zeit als Messfehler rausgeschmissen. Ein Median-Filter hilft, erzeugt aber in Form eines kausales Filter auch einen Zeitversatz. Jakob schrieb: > Liegen vielleicht Erfahrungen vor, wie groß die maximale > Änderung der Messwerte pro Messzyklus (ohne Ausreißer) in > 68% ... 96% der Fälle ist? Das hängt vom Prozess und von der Messung ab. Pauschal läßt sich das nicht beantworten.
Jakob schrieb: > in > 68% ... 96% der Fälle ist? (Hier kommt sigma ins Spiel.) Daher der 3Sigma-Test. Das Wissen darüber scheint aber gründlich verlorengegangen zu sein. Der Unterschied zum Median-Filter: da bleibt der wahrscheinliche falsche Messwert drin in der Auswertung, es wird lediglich so gemixt, dass ein gemittelter Momentanwert entsteht. Bei Sigma-Tests fliegt ein unplausibler Wert ganz aus der Messreihe raus. Voraussetzung ist theoretisch, dass die Messwerte einer Gaussverteilung unterliegen. Ob man nun 1,2 oder 3 Sigma als Grenze nimmt ist Geschmackssache und auch von der Qualität der Messungen abhängig. Bei 3 Sigma ist eine Überschreitung so unwahrscheinlich dass sie in der Praxis nicht vorkommt. Implementieren kann das der TO sicher nicht, aber mit der Rechenleistung gibt es kein Problem, ich hatte das vor Jahrzehnten schon auf einem Z80 laufen. Georg
Georg schrieb: > Der Unterschied zum Median-Filter: da bleibt > der wahrscheinliche falsche Messwert drin in der Auswertung sehe ich nicht so, aus einer Reihe von Werten wird der "mittlere" Wert genommen, damit kommt eine Ausreißer nicht in die AUswertung Wolfgang schrieb: > Ein Median-Filter hilft, erzeugt aber in Form eines kausales Filter auch > einen Zeitversatz. man kann den Medianfilter etwas abwandeln: man nimmt den neuen Wert dann, wenn er in der Messreihe von sagen wir 10 Werten keinen Randplatz einnimmt, wenn der Wert auf einem Randplatz sitzt wird entweder der nächstliegende Wert genommen oder der Medianwert damit gibt es keinen Zeitversatz solange keine Störungen sind
Walter S. schrieb: > damit gibt es keinen Zeitversatz solange keine Störungen sind Doch, wenn die Eingangsgröße der Messung ein Sprung ist, wird die Erkennung verzögert. Die Erkennung von Störungen erfordert mehr Abtastwerte und mehr Abtastwerte erzeugen bei kausalen Filtern Zeitversatz. Georg schrieb: > Das Wissen darüber scheint aber gründlich verlorengegangen zu sein. Mitnichten. Aber nicht alle Prozessdaten lassen sich damit beurteilen. Die statistische Verfahren die auf Normalverteilung beruhen, können auch nur mit Prozessdaten umgehen, die sich ausreichend gut durch eine Normalverteilung beschreiben lassen. Sprünge gehören nicht dazu.
Also mir fällt da ja direkt die Autokorrelationsfunktion ein. Verwendet man in Radaranlagen, um den zurückkommenden Radarpuls von Störstrahlung unterscheiden zu können. Sollte sich bei genügend großer Abtastrate auch auf nem µC implementieren lassen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.