21#ifndef mia_core_statistics_hh
22#define mia_core_statistics_hh
77 double median(std::vector<double>& buf)
const;
87 double n = data.size();
89 for (
auto i = data.begin(); i != data.end(); ++i) {
97 result.first = sum / n;
100 result.second = sqrt((sum2 - result.first * sum) / (n - 1));
109 std::vector<double> buffer(data.size());
110 copy(data.begin(), data.end(), buffer.begin());
112 result.first = median(buffer);
113 transform(buffer.begin(), buffer.end(), buffer.begin(),
114 [&result](
double x) {
115 return fabs(x - result.first);
117 result.second = median(buffer);
121double FMedianMAD::median(std::vector<double>& buf)
const
126 if (buf.size() & 1) {
127 auto i = buf.begin() + (buf.size() - 1) / 2;
128 std::nth_element(buf.begin(), i, buf.end());
131 auto i1 = buf.begin() + buf.size() / 2 - 1;
132 auto i2 = buf.begin() + buf.size() / 2;
133 std::nth_element(buf.begin(), i1, buf.end());
134 std::nth_element(buf.begin(), i2, buf.end());
135 return (*i1 + *i2) / 2.0;
#define NS_MIA_BEGIN
conveniance define to start the mia namespace
#define NS_MIA_END
conveniance define to end the mia namespace
Functor to be called by mia::filter to evaluate mean and variance of a series of data.
TFilter< std::pair< double, double > >::result_type result_type
result_type operator()(const T &data) const
base class for all filer type functors.