MedianFilter.cpp
Go to the documentation of this file.
00001 #include "robodyn_utilities/MedianFilter.h"
00002 
00003 MedianFilter::MedianFilter():
00004     size(1)
00005 {
00006 }
00007 
00008 MedianFilter::~MedianFilter()
00009 {
00010 }
00011 
00012 void MedianFilter::setSize(unsigned int size)
00013 {
00014     if (size > 0)
00015     {
00016         this->size = size;
00017     }
00018     else
00019     {
00020         this->size = 1;
00021     }
00022 }
00023 
00024 void MedianFilter::addValue(double newValue)
00025 {
00026     while (values.size() >= size)
00027     {
00028         values.pop_front();
00029     }
00030 
00031     values.push_back(newValue);
00032 }
00033 
00034 double MedianFilter::getMedian()
00035 {
00036     std::deque<double> temp = values;
00037 
00038     std::sort(temp.begin(), temp.end());
00039 
00040     if (temp.size() % 2 == 0)
00041     {
00042         median = (temp[temp.size() / 2 - 1] + temp[temp.size() / 2]) / 2;
00043     }
00044     else
00045     {
00046         median = temp[temp.size() / 2];
00047     }
00048 
00049     return median;
00050 }
00051 
00052 double MedianFilter::getMedian(double newValue)
00053 {
00054     addValue(newValue);
00055 
00056     return getMedian();
00057 }


robodyn_utilities
Author(s):
autogenerated on Thu Jun 6 2019 18:56:07