Interessante vraag!
Een moving average filter heeft, net zoals een exponentieel filter, een low-pass karakteristiek. MA is echter een niet-linear filter met een kleinere afval dan een linear 1ste of 2de orde filter.
Concreet betekent dit, dat als je voldoende demping wilt om de ruis in je (nu te) snelle updates weg te filteren, je filter zó lang en traag wordt, dat wél significante variaties een grote delay kunnen krijgen. Theoretisch dus misschien niet belangrijk in de praktijk
Tweede uitgaging is de implementatie. Exponentieel benodigt maar weinig processortijd (recursief -IIR), terwijl een moving average filter een FIR struktuur heeft. Je dient dus veel meer te rekenen, schuiven etc bij FIR. Dat zal in de praktijk met een RPi overigens geen enkel probleem zijn, maar dat moet je wel netjes zien te coderen. Ik denk dat daar wel voorbeelden van zijn te vinden (ik heb ze zo niet).
Origineel idee om de variaties als gevolg van cyclische bewegingen nog nét weg te filteren, en alle frequenties daaronder door te laten. Lijkt mij een heel leuk experiment om te kijken hoe dat zich gedraagt!
Hoe dát te implementeren weet ik niet: in principe zou je eerst de kantelfrequentie willen bepalen die bij die periode hoort. Heeft jouw platform daar slimme FFT algorithmen voor? Daarna zou je, op basis van die (doorlopend aangepaste) schatting van die frequentie je échte filter willen aanpassen.
Dat laatste heb ik laatst wél wat mee gestoeid bij wat experimenten om "PolarPlot" event-driven te maken. Dan komen de samples niet netjes gespaced binnen, terwijl ik (na filtering) wel een in de tijd consistente dataset wil houden. Het gedrag van het filter moest dus gelijk blijven, te berieken door het filter min of meer adaptief te maken. Ik heb het toen opgegeven, omdat de implementatie wel ingewikkeld werd. Lukte wél om de filterconstante real-time te berekenen op basis van de (vrariabele) tijd tussen de twee laatste samples, maar om tegelijkertijd het filter te her-initialiseren was erg lastig.
Probeer anders eerst eens (om het principe te testen) tegelijkertijd zo'n EMA én FIR filter te laten draaien, waarbij je de lengte van het FIR filter live aanpast op basis van je eigen schatting van de golf-periode. Thuis kun je de ruwe data dan vergelijken met de twee filter-topologiën.
Leuk onderwerp en toepassing! (maar bij mij aardig weggezakt)