Bayley Wang
/
foc-ed_in_the_bot_compact
robot
Filter/Filter.h@144:a9e7fa1c98d7, 2017-05-03 (annotated)
- 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?
User | Revision | Line number | New 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 | }; |