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

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?

UserRevisionLine numberNew 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 }