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
MovingAverage.cpp@0:226202c7ea37, 2013-04-14 (annotated)
- Committer:
- Alegrowin
- Date:
- Sun Apr 14 01:02:39 2013 +0000
- Revision:
- 0:226202c7ea37
Initial Commit; ; This library purpose is to provide a tool to filter data from a source that is not precise enough,; ; Read more here:http://en.wikipedia.org/wiki/Moving_average
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Alegrowin | 0:226202c7ea37 | 1 | /*****************************************************/ |
Alegrowin | 0:226202c7ea37 | 2 | /* _ _ */ |
Alegrowin | 0:226202c7ea37 | 3 | /* /\ | | (_) */ |
Alegrowin | 0:226202c7ea37 | 4 | /* / \ | | ___ __ _ _ __ _____ ___ _ __ */ |
Alegrowin | 0:226202c7ea37 | 5 | /* / /\ \ | |/ _ \/ _` | '__/ _ \ \ /\ / / | '_ \ */ |
Alegrowin | 0:226202c7ea37 | 6 | /* / ____ \| | __/ (_| | | | (_) \ V V /| | | | | */ |
Alegrowin | 0:226202c7ea37 | 7 | /* /_/ \_\_|\___|\__, |_| \___/ \_/\_/ |_|_| |_| */ |
Alegrowin | 0:226202c7ea37 | 8 | /* __/ | */ |
Alegrowin | 0:226202c7ea37 | 9 | /* |___/ */ |
Alegrowin | 0:226202c7ea37 | 10 | /* Created on April 2013 */ |
Alegrowin | 0:226202c7ea37 | 11 | /*****************************************************/ |
Alegrowin | 0:226202c7ea37 | 12 | |
Alegrowin | 0:226202c7ea37 | 13 | |
Alegrowin | 0:226202c7ea37 | 14 | /* |
Alegrowin | 0:226202c7ea37 | 15 | |
Alegrowin | 0:226202c7ea37 | 16 | for(int i = 0; i < FILTRE_RANGE; i++) { |
Alegrowin | 0:226202c7ea37 | 17 | FiltreMobile[i] = cmd[0]; |
Alegrowin | 0:226202c7ea37 | 18 | } |
Alegrowin | 0:226202c7ea37 | 19 | |
Alegrowin | 0:226202c7ea37 | 20 | Temp = Temp - FiltreMobile[Temp_next]/FILTRE_RANGE + cmd[0]/FILTRE_RANGE; |
Alegrowin | 0:226202c7ea37 | 21 | FiltreMobile[Temp_next++] = cmd[0]; |
Alegrowin | 0:226202c7ea37 | 22 | |
Alegrowin | 0:226202c7ea37 | 23 | Temp_next = Temp_next&0x07; |
Alegrowin | 0:226202c7ea37 | 24 | }*/ |
Alegrowin | 0:226202c7ea37 | 25 | #include "MovingAverage.h" |
Alegrowin | 0:226202c7ea37 | 26 | |
Alegrowin | 0:226202c7ea37 | 27 | template<class T> |
Alegrowin | 0:226202c7ea37 | 28 | MovingAverage<T>::MovingAverage(unsigned char maxLength, T defaultValue){ |
Alegrowin | 0:226202c7ea37 | 29 | MaxLength = maxLength; |
Alegrowin | 0:226202c7ea37 | 30 | |
Alegrowin | 0:226202c7ea37 | 31 | AverageFilter = new T[MaxLength]; |
Alegrowin | 0:226202c7ea37 | 32 | |
Alegrowin | 0:226202c7ea37 | 33 | for(int i = 0; i<MaxLength;i++) |
Alegrowin | 0:226202c7ea37 | 34 | { |
Alegrowin | 0:226202c7ea37 | 35 | AverageFilter[i] = defaultValue; |
Alegrowin | 0:226202c7ea37 | 36 | } |
Alegrowin | 0:226202c7ea37 | 37 | Average = defaultValue; |
Alegrowin | 0:226202c7ea37 | 38 | } |
Alegrowin | 0:226202c7ea37 | 39 | |
Alegrowin | 0:226202c7ea37 | 40 | template<class T> |
Alegrowin | 0:226202c7ea37 | 41 | T MovingAverage<T>::GetAverage(){ |
Alegrowin | 0:226202c7ea37 | 42 | return Average; |
Alegrowin | 0:226202c7ea37 | 43 | } |
Alegrowin | 0:226202c7ea37 | 44 | template<class T> |
Alegrowin | 0:226202c7ea37 | 45 | void MovingAverage<T>::Insert(T value){ |
Alegrowin | 0:226202c7ea37 | 46 | |
Alegrowin | 0:226202c7ea37 | 47 | Average = Average - AverageFilter[NextElement]/MaxLength + value/MaxLength; |
Alegrowin | 0:226202c7ea37 | 48 | FiltreMobile[NextElement++] = value; |
Alegrowin | 0:226202c7ea37 | 49 | |
Alegrowin | 0:226202c7ea37 | 50 | NextElement = NextElement&MaxLength; |
Alegrowin | 0:226202c7ea37 | 51 | } |