RtMedianFilter.cpp
Go to the documentation of this file.
1#include "RtMedianFilter.h"
2
4
6{
8 {
9 dataHistory.set_capacity(windowSize);
10 medianBuffer.resize(windowSize);
11 }
12
13 float
15 {
16 dataHistory.push_back(value);
17 std::copy(dataHistory.begin(), dataHistory.end(), medianBuffer.begin());
18 const auto n = dataHistory.size();
19 std::sort(medianBuffer.begin(), medianBuffer.begin() + static_cast<long>(n));
20 float result = n % 2 == 0 ? (medianBuffer.at(n / 2 - 1) + medianBuffer.at(n / 2)) / 2
21 : medianBuffer.at(n / 2);
22 return result;
23 }
24
25 std::size_t
27 {
28 return medianBuffer.size();
29 }
30} // namespace armarx::control::rt_filters