C ++ Boost Max Deviation

时间:2015-02-18 22:11:45

标签: c++ boost

一点点脑筋急转弯,我想知道是否有一种简单的方法使用Boost来使用accumulator_set获得值与均值的最大偏差?距离平均值最远点。

值在accumulator_set<float, stats<tag::variance>> val但我怀疑可能需要其他标签。

// defined by: MAX(abs(val[x] - mean)) 
float max_stdev(accumulator_set<float, stats<tag::variance>>& val) {
  // mean(val) gives mean

  // can't just use max on the set 
}

// e.g. val contains 1,2,3
accumulator_set<float, stats<tag::variance>> val
val(1), val(2), val(3);
float max_val = max_stdev(val);  // would return 1

1 个答案:

答案 0 :(得分:4)

最大偏差是最大值减去平均值或平均值减去最小值,以较大者为准。这表明以下简单的实现:

double max_deviation(accumulator_set<double, features<tag::min, tag::max, tag::mean> > const &acc) {
  return std::max(max(acc) - mean(acc), mean(acc) - min(acc));
}