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
- Committer:
- Alegrowin
- Date:
- 2013-04-14
- Revision:
- 0:226202c7ea37
File content as of revision 0:226202c7ea37:
/*****************************************************/ /* _ _ */ /* /\ | | (_) */ /* / \ | | ___ __ _ _ __ _____ ___ _ __ */ /* / /\ \ | |/ _ \/ _` | '__/ _ \ \ /\ / / | '_ \ */ /* / ____ \| | __/ (_| | | | (_) \ 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; }