Unter Umständen wäre auch statt eines gleitenden Mittelwertes ein
gleitender Median möglich. Nämlich dann, wenn Du Ausreißer (Spikes)
weghaben willst.
Ein gleitender Mittelwert summiert die letzten N Werte auf und teilt sie
durch N. Implementieren tut man das natürlich nicht so direkt, sondern
man zieht vom aktuellen gleitenden Mittelwert den durch N geteilten
ältesten Wert ab und addiert den durch N geteilten neuesten Wert drauf.
Allerdings geht dann jeder Teilwert immer noch linear in den Mittelwert
ein.
Der Effekt: Du hast eine Kneipe mit 99 Habenichtsen, und auf einmal
verirrt sich ein Milliardär in diese Kneipe. Der gleitende Mittelwert
ergibt dann, daß die Kneipe von Multimillionären besucht wird.
Der Median gibt Dir stattdessen den Wert, unterhalb/oberhalb dessen 50%
der Werte liegen. Es ist dabei egal, wie WEIT einzelne Ausreißer gehen.
Der Nachteil ist, daß man dann seine letzten N Werte sortieren muß, für
embedded empfehle ich dabei Shellsort oder Heapsort.
In der besagten Kneipe wäre der gleitende Median nun das wahrscheinlich
auch erwartete Ergebnis, daß der Mediangast ein Habenichts ist.
Fazit: Nimm ein Mittelwertfilter, um Rauschen wegzukriegen, und einen
Medianfilter, um Spikes zu eliminieren.