Ausfiltern von falschen Werten in einer Messung (kein Tiefpass!)

OP #1442596
Hallo!

Ich steh gerade ein wenig auf dem Schlauch und hoffe auf Eure Hilfe.

Ich messe die Periode einer (vergleichsweise langsam) wechselnden 
Frequenz mit einem Timer (per ISR). Leider erhalte ich durch 
Fehltriggerung auch einmal falsche Werte. Anbei einmal eine 
beispielhafte Sequenz mit Fehlern:
1
15194,    223
2
15307,    113
3
15662,    355
4
15830,    168
5
 6790,  -9040 ---
6
 9221,   2431 +++
7
16230,   7009 +++
8
16468,    238
9
16669,    201
10
   11, -16658 ---
11
17050,  17039 +++
12
17257,    207
13
17519,    262
14
17798,    279
15
   10, -17788 ---
16
18373,  18363 +++
17
18812,    439
18
 8179, -10633 ---
19
10821,   2642 +++
20
19527,   8706 +++
21
19746,    219
22
20000,    254
23
20450,    450
24
20779,    329

Der erste Wert ist die Periode, der zweite die Differenz zum vorherigen 
Wert, dahinter ein Marker wo die Änderung unplausibel ist (wird durch 
75%-125% Schwellen erkannt).

In einem einfachen Ansatz könnte man jetzt die kleinen Werte (<30) per 
se ausfiltern. Leider habe ich aber auch Fehlauslösungen die zu 
plausiblen Werten führen. Diese durch die Änderung zum letzten 
akzeptierten Messwert auszufiltern wäre ok, aber falls aus welchem Grund 
auch immer wirklich mal ein größerer Sprung drin war bleibe ich dann auf 
einmal "Kleben". Eine "gepfuschte" Lösung wäre die Anzahl der 
verworfenen Ergebnisse zu begrenzen und dann einen neuen Wert zu 
nehmen...

Gibt es hierzu mehr oder minder gängige Ansätze?

Ich möchte KEINE Tiefpassfilterung (zumindest an dieser Stelle) 
vornehmen!

Grüße
Robert
#1442680
Ich denk auch man sollte sich die Ursache anschauen, denn jeder 3 
Messwert in die Tonne ist nicht wirklich zuverlaessig. Was ist, wenn in 
einer anderen Umgebung, ein anderes Netzteil die Sache sich 
verschlechtert ? zB alle Werte fuer die Tonne sind ?
Gast #1442855
Man sollte sehen die Fehlauslösungen zu vermeiden. Bei 30% Ausreißern 
ist das nicht einfach die richtigen werte zu finden.

@Heinz:
Der Kalmanfilter wird hier nicht weiterhelfen. Der geht von annähernd 
normalverteilten Werten aus, was hier gerade nicht der Fall ist. Im 
Endefekt wird da auch nur eine Art Tiefpaß rauskommen.

Was man hier bräuchte ist ein rbouster Schätzer, so wie der oben 
erwähnte Median.
Moderator (Firma: Titel) Persönliche Seite #1442917
> Ich messe die Periode einer (vergleichsweise langsam) wechselnden
> Frequenz mit einem Timer (per ISR).
Hast du für "vergleichsweise langsam" auch Zahlen zur Hand?
Der Ansatz, mit einem langsamen Signal auf einen Interrupt zu gehen, ist 
falsch. Du solltest nämlich vor der Auswertung dein Signal 
aufbereiten, nicht nach der Auswertung an Sypmtomen herumbasteln...
Gast #1443526
Hallo,

sieht für mich so aus als entweder in der Software die Register in der 
falschen Reihenfolge ausgelesen werden, oder Überläufe "65536" nicht 
richtig berechnet werden.
Ansonsten sollte eine Periodendauer immer erst Tiefpaßgefiltert und dann 
mit einem Schmitt-Trigger mit ausreichender Hysterese aufbereitet werden 
bevor man auf einen Prozessor-Pin geht.
Gast #1443764
Hallo,

üblich (und mathematisch abgesichert) ist eine 3-Sigma-Filterung. Bei 
Normalverteilung kommen Werte ausserhalb +- 3 Sigma praktisch nicht vor, 
also kann man sie als Fehlmessung eliminieren ohne Rückwirkung auf die 
normalverteilte Messreihe. Da in den übrigen Messwerten wieder 
Ausreisser auftreten können (die Standardabweichung muss ja ohne die 
elminierten Werte neu berechnet werden), kann man das Verfahren 
wiederholen, ev. solange bis keine Werte mehr zu eliminieren sind.

Gruss Reinhard

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.