Moving Average
Dependents: MovingAverage_HelloWorld Levitator EMG_Realtime_Filter EMG_Calibration ... more
Fork of MoyenneMobile by
MovingAverage.h@1:b310d132db09, 2014-07-07 (annotated)
- 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?
User | Revision | Line number | New 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 |