robot

Dependencies:   FastPWM3 mbed

Committer:
bwang
Date:
Wed May 03 12:24:28 2017 +0000
Revision:
144:a9e7fa1c98d7
Child:
146:296bcc30e65d
05/03/2017 08:24 - added circular buffer code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 144:a9e7fa1c98d7 1 #include "mbed.h"
bwang 144:a9e7fa1c98d7 2 #include "math.h"
bwang 144:a9e7fa1c98d7 3
bwang 144:a9e7fa1c98d7 4 class CircularBuffer {
bwang 144:a9e7fa1c98d7 5 public:
bwang 144:a9e7fa1c98d7 6 CircularBuffer(int length);
bwang 144:a9e7fa1c98d7 7 float oldest() {if (oldest_index >= 0) return buf[oldest_index]; return 0.0f;}
bwang 144:a9e7fa1c98d7 8 float newest() {if (newest_index >= 0) return buf[newest_index]; return 0.0f;}
bwang 144:a9e7fa1c98d7 9 int length() {return _length;}
bwang 144:a9e7fa1c98d7 10 void add(float x); /*recomputes mean, median - O(length) time*/
bwang 144:a9e7fa1c98d7 11 float &at(int index);
bwang 144:a9e7fa1c98d7 12 public:
bwang 144:a9e7fa1c98d7 13 float &operator[](int index) {return at(index);}
bwang 144:a9e7fa1c98d7 14 public:
bwang 144:a9e7fa1c98d7 15 /*O(1) time*/
bwang 144:a9e7fa1c98d7 16 float mean();
bwang 144:a9e7fa1c98d7 17 float median();
bwang 144:a9e7fa1c98d7 18 private:
bwang 144:a9e7fa1c98d7 19 int _length;
bwang 144:a9e7fa1c98d7 20 int oldest_index, newest_index, num;
bwang 144:a9e7fa1c98d7 21 float sum;
bwang 144:a9e7fa1c98d7 22 private:
bwang 144:a9e7fa1c98d7 23 float *buf;
bwang 144:a9e7fa1c98d7 24 float *sorted;
bwang 144:a9e7fa1c98d7 25 };