MovingAverage template

Dependents:   trms_helloworld

Fork of MoyenneMobile by Alexandre Proulx

Files at this revision

API Documentation at this revision

Comitter:
fblanc
Date:
Mon Jul 07 12:27:57 2014 +0000
Parent:
0:226202c7ea37
Child:
2:da07a13d617f
Commit message:
ok MovingAverage

Changed in this revision

MovingAverage.cpp Show annotated file Show diff for this revision Revisions of this file
MovingAverage.h Show annotated file Show diff for this revision Revisions of this file
--- a/MovingAverage.cpp	Sun Apr 14 01:02:39 2013 +0000
+++ b/MovingAverage.cpp	Mon Jul 07 12:27:57 2014 +0000
@@ -23,29 +23,3 @@
     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;
-}
\ No newline at end of file
--- a/MovingAverage.h	Sun Apr 14 01:02:39 2013 +0000
+++ b/MovingAverage.h	Mon Jul 07 12:27:57 2014 +0000
@@ -5,7 +5,7 @@
 class MovingAverage
 {
 private:
-    T AverageFilter[];
+    T* Element;
     T Average;
     
     unsigned char NextElement;
@@ -13,7 +13,35 @@
 public:
     MovingAverage(unsigned char maxLength, T defaultValue);
     T GetAverage();
+
     void Insert(T value);
 };
 
+template<class T>
+MovingAverage<T>::MovingAverage(unsigned char maxLength, T defaultValue){
+    MaxLength = maxLength;
+    
+    Element = new T[MaxLength];
+    
+    for(int i = 0; i<MaxLength;i++)
+    {
+        Element[i] = defaultValue;
+    }
+    Average = defaultValue;
+}
+
+template<class T>
+T MovingAverage<T>::GetAverage(){
+    return Average;
+}
+
+
+template<class T>
+void MovingAverage<T>::Insert(T value){
+    Average = value/MaxLength + Average - Element[++NextElement]/MaxLength;
+    Element[NextElement] = value;
+    if(NextElement>=(MaxLength-1))   
+        NextElement=0;
+    
+}
 #endif
\ No newline at end of file