Je zou dit digitaal kunnen filteren met behulp van een laagdoorlaatfilter:
int valueFilt = (1-0,99) * waarde + 0,99 * valueFilt;
Verander de 0,99 om de afsnijfrequentie te wijzigen (dichter bij 1,0 is de lagere frequentie). De feitelijke uitdrukking voor die waarde is exp (-2 * pi * f / fs), waarbij f de gewenste afsnijfrequentie is en fs de frequentie waarop de gegevens worden gesampled.
Een ander type 'digitaal filter "is een gebeurtenisfilter. Het werkt goed op gegevens met uitschieters; bijv. 9,9,8,10,9,25,9. Een gebeurtenisfilter retourneert de meest voorkomende waarde. Statistisch gezien is dit de modus.
Statistische gemiddelden zoals gemiddelde, modus enz. Kunnen worden berekend met behulp van de Arduino-gemiddelde bibliotheek.
Een voorbeeld uit de Arduino Library-pagina waarnaar wordt verwezen:
#include <Average.h> # definieer CNT 600int d [CNT]; void setup () {Serial.begin (9600);} void loop () {int ik; voor (i = 0; i<CNT; i ++) {d [i] = willekeurig (500); } Serial.print ("Mean:"); Serial.print (gemiddelde (d, CNT), DEC); Serial.print ("Mode:"); Serial.print (modus (d, CNT), DEC); Serial.print ("Max:"); Serial.print (maximum (d, CNT), DEC); Serial.print ("Min:"); Serial.print (minimum (d, CNT), DEC); Serial.print ("Standaarddeviatie:"); Serial.print (stddev (d, CNT), 4); Serial.println (""); Serial.println (""); delay (5000);}