Moving Average

Dependents:   MovingAverage_HelloWorld Levitator EMG_Realtime_Filter EMG_Calibration ... more

Fork of MoyenneMobile by Alexandre Proulx

Committer:
fblanc
Date:
Mon Jul 07 12:27:57 2014 +0000
Revision:
1:b310d132db09
Parent:
0:226202c7ea37
Child:
4:ad69440a9bef
ok MovingAverage

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Alegrowin 0:226202c7ea37 1 #ifndef MOVING_AVERAGE_H
Alegrowin 0:226202c7ea37 2 #define MOVING_AVERAGE_H
Alegrowin 0:226202c7ea37 3
Alegrowin 0:226202c7ea37 4 template <class T>
Alegrowin 0:226202c7ea37 5 class MovingAverage
Alegrowin 0:226202c7ea37 6 {
Alegrowin 0:226202c7ea37 7 private:
fblanc 1:b310d132db09 8 T* Element;
Alegrowin 0:226202c7ea37 9 T Average;
Alegrowin 0:226202c7ea37 10
Alegrowin 0:226202c7ea37 11 unsigned char NextElement;
Alegrowin 0:226202c7ea37 12 unsigned char MaxLength;
Alegrowin 0:226202c7ea37 13 public:
Alegrowin 0:226202c7ea37 14 MovingAverage(unsigned char maxLength, T defaultValue);
Alegrowin 0:226202c7ea37 15 T GetAverage();
fblanc 1:b310d132db09 16
Alegrowin 0:226202c7ea37 17 void Insert(T value);
Alegrowin 0:226202c7ea37 18 };
Alegrowin 0:226202c7ea37 19
fblanc 1:b310d132db09 20 template<class T>
fblanc 1:b310d132db09 21 MovingAverage<T>::MovingAverage(unsigned char maxLength, T defaultValue){
fblanc 1:b310d132db09 22 MaxLength = maxLength;
fblanc 1:b310d132db09 23
fblanc 1:b310d132db09 24 Element = new T[MaxLength];
fblanc 1:b310d132db09 25
fblanc 1:b310d132db09 26 for(int i = 0; i<MaxLength;i++)
fblanc 1:b310d132db09 27 {
fblanc 1:b310d132db09 28 Element[i] = defaultValue;
fblanc 1:b310d132db09 29 }
fblanc 1:b310d132db09 30 Average = defaultValue;
fblanc 1:b310d132db09 31 }
fblanc 1:b310d132db09 32
fblanc 1:b310d132db09 33 template<class T>
fblanc 1:b310d132db09 34 T MovingAverage<T>::GetAverage(){
fblanc 1:b310d132db09 35 return Average;
fblanc 1:b310d132db09 36 }
fblanc 1:b310d132db09 37
fblanc 1:b310d132db09 38
fblanc 1:b310d132db09 39 template<class T>
fblanc 1:b310d132db09 40 void MovingAverage<T>::Insert(T value){
fblanc 1:b310d132db09 41 Average = value/MaxLength + Average - Element[++NextElement]/MaxLength;
fblanc 1:b310d132db09 42 Element[NextElement] = value;
fblanc 1:b310d132db09 43 if(NextElement>=(MaxLength-1))
fblanc 1:b310d132db09 44 NextElement=0;
fblanc 1:b310d132db09 45
fblanc 1:b310d132db09 46 }
Alegrowin 0:226202c7ea37 47 #endif