25 #include "Median1D.hh"
26 #include <Base/Debug/LogFacility.hh>
31 template<
class DataType>
35 if (Values_.empty()) {
36 BIASERR(
"Failed to compute median for empty vector!");
39 std::sort(Values_.begin(), Values_.end());
40 const unsigned int i = (Values_.size() - 1) / 2;
45 template<
class DataType>
48 if (Values_.empty()) {
49 BIASERR(
"Failed to compute quantile for empty vector!");
52 const double d = std::min(1.0, std::max(0.0, p)) * (Values_.size() - 1);
53 const unsigned int i = (
unsigned int)d;
57 template<
class DataType>
59 DataType median)
const
62 BIASERR(
"Failed to compute X84 for empty vector!");
65 const unsigned int n = vec.size();
66 std::vector<DataType> diff(n);
67 for (
unsigned int i = 0; i < n; i++)
68 diff[i] = (vec[i] > median) ? (vec[i] - median) : (median - vec[i]);
69 std::sort(diff.begin(), diff.end());
70 return diff[(n - 1) / 2];