The moving average purpose is to filter some data that comes from a source that may be unprecise. See more information about Moving Average here: http://en.wikipedia.org/wiki/Moving_average
Diff: MovingAverage.cpp
- Revision:
- 0:226202c7ea37
diff -r 000000000000 -r 226202c7ea37 MovingAverage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MovingAverage.cpp Sun Apr 14 01:02:39 2013 +0000 @@ -0,0 +1,51 @@ +/*****************************************************/ +/* _ _ */ +/* /\ | | (_) */ +/* / \ | | ___ __ _ _ __ _____ ___ _ __ */ +/* / /\ \ | |/ _ \/ _` | '__/ _ \ \ /\ / / | '_ \ */ +/* / ____ \| | __/ (_| | | | (_) \ V V /| | | | | */ +/* /_/ \_\_|\___|\__, |_| \___/ \_/\_/ |_|_| |_| */ +/* __/ | */ +/* |___/ */ +/* Created on April 2013 */ +/*****************************************************/ + + +/* + +for(int i = 0; i < FILTRE_RANGE; i++) { + FiltreMobile[i] = cmd[0]; + } + + Temp = Temp - FiltreMobile[Temp_next]/FILTRE_RANGE + cmd[0]/FILTRE_RANGE; + FiltreMobile[Temp_next++] = cmd[0]; + + Temp_next = Temp_next&0x07; +}*/ +#include "MovingAverage.h" + +template<class T> +MovingAverage<T>::MovingAverage(unsigned char maxLength, T defaultValue){ + MaxLength = maxLength; + + AverageFilter = new T[MaxLength]; + + for(int i = 0; i<MaxLength;i++) + { + AverageFilter[i] = defaultValue; + } + Average = defaultValue; +} + +template<class T> +T MovingAverage<T>::GetAverage(){ + return Average; +} +template<class T> +void MovingAverage<T>::Insert(T value){ + + Average = Average - AverageFilter[NextElement]/MaxLength + value/MaxLength; + FiltreMobile[NextElement++] = value; + + NextElement = NextElement&MaxLength; +} \ No newline at end of file