Datenreihe filtern, aber wie?

Gast #1281163
Lesenswert?

Hi, ich habe in einem Mikrocontroller ein Array, indem die empfangenen 
Datenwerte gespeichert sind. Nun möchte ich mittels eines Filter (IIR 
oder FIR) die Datenwerte mitteln. Damit möchte ich die Ausreißer 
herausfiltern.
Ich habe mir dabei gedacht, ich mache eine Filterung, indem ich 10 mal 
die Datenwerte im Mikrocontroller erfasse und dann einen Filterung 
durchführe.
Ein IIR Filter wäre denke ich besser dafür geeignet, da dieses Filter 
weniger Koeffizienten hat und die Berechnung schneller erfolgt wie bei 
einem FIR Filter. Was meinst ihr dazu? Wie könnte man sowas in Ansi C 
realisieren?
Für jeden Ratschlag bin ich sehr dankbar
Gast #1281185
Lesenswert?

> Hi, ich habe in einem Mikrocontroller ein Array, indem die empfangenen
> Datenwerte gespeichert sind. Nun möchte ich mittels eines Filter (IIR
> oder FIR) die Datenwerte mitteln. Damit möchte ich die Ausreißer
> herausfiltern.
> Ich habe mir dabei gedacht, ich mache eine Filterung, indem ich 10 mal
> die Datenwerte im Mikrocontroller erfasse und dann einen Filterung
> durchführe.
> Ein IIR Filter wäre denke ich besser dafür geeignet, da dieses Filter
> weniger Koeffizienten hat und die Berechnung schneller erfolgt wie bei
> einem FIR Filter. Was meinst ihr dazu? Wie könnte man sowas in Ansi C
> realisieren?
> Für jeden Ratschlag bin ich sehr dankbar
Die grundlegende Frage lautet ja, welche Art von Filterung Du 
durchführen willst. Erst danach stellt sich die Frage, wie das im µC 
realisiert werden kann.

Das einfachste Filter zum Auslöschen von Ausreißern ist das 
Medianfilter.
Dabei sortierst Du die Werte aus der Umgebung von x(n), d. h. 
beispielsweise, Du sortierst die Zahlen [ x(n-5) ... x(n) ... x(n+5) ] 
und ersetzt x(n) durch den mittleren der Werte, also


Du kannst natürlich auch ein gewöhnliches FIR-Tiefpaßfilter nehmen. Die 
Filterkoeffizienten und den Algorithmus würde ich zunächst in Matlab/GNU 
Octave austesten.

Gruß,
  Michael
Gast #1281721
Lesenswert?

Danke für eure Hilfe. Ich hab mir das so gedacht:
10 Messreihen ermitteln und über diese Messreihen eine art Statistik 
erstellen. Dabei dachte ich mir dies geht mit einem Filter (z.B. IIR) 
mit dem ich so zusagen eine Mittellung durchführe.
#1282408
Lesenswert?

Kopfschuettel. Das hast du doch schon in deinem ersten Post 
geschrieben und wir haben dir gesagt dass man das so nicht macht sondern 
mit einem Median Filter. Ich mein, selbst wenn deine Methode 
funktioniert... Elegant ist sie nicht und wenn du das irgendjemand 
anderem zeigst dann hat der dich gleich unter Nullpeiler abgestempelt.
Gast #1282429
Lesenswert?

Hallo,

> Danke für eure Hilfe. Ich hab mir das so gedacht:
> 10 Messreihen ermitteln und über diese Messreihen eine art Statistik
> erstellen. Dabei dachte ich mir dies geht mit einem Filter (z.B. IIR)
> mit dem ich so zusagen eine Mittellung durchführe.

wenn Du immer den gleichen Wert oder den gleichen Verlauf erwartest, 
kannst Du eine Statistik erstellen. In diesem Fall bietet es sich an, 
das sogenannte Scharmittel (bzw. den Scharmedian) zu bilden. Das 
bedeutet, daß Du über die Wiederholung mittelst.

Wenn Du einen komplizierten Verlauf erwartest, der in dieser Form nur 
einmal auftritt, mußt Du zeitlich mitteln, wobei das Medianfilter 
tendenziell besser ist als die arithmetische Mittelung.

Es wäre hilfreich, wenn Du die Daten und Dein Konzept an einem Beispiel 
darstellen würdest. Denn nur am konkreten Beispiel läßt sich eine 
optimale Lösung finden.

Über FIR/IIR oder sonstwas können wir uns dann unterhalten.


Gruß,
  Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren