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
> 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
Du musst nicht unbeding sortieren um den Median herauszufinden. Google nach Quickselect.
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.
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.
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
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.