我有一些代码使用 Boost 累加器来跟踪滚动窗口的平均值——“滚动平均值”。除了滚动平均值之外,我还想跟踪同一滚动窗口中的最小值和最大值。
有没有办法用 Boost 累加器计算滚动最小值和滚动最大值?我没有看到方法...
我尝试将 min 和 max 标签添加到用于 rolling_mean 的累加器中,但这并没有给我想要的东西。
typedef accumulator_set<uint32_t, stats<tag::rolling_mean> > rollingMeanAcc_t;
变成
typedef accumulator_set<uint32_t, stats<tag::rolling_mean,tag::min,tag::max> > rollingMeanAcc_t;
但是,此处提供的最小值和最大值是在整个累加器上计算的,而不是限于与平均值相同的滚动窗口。
Boost文档说 min 和 max 是在所有样本中计算的,不限于滚动窗口。它们似乎没有提供限制或加权样本的方法。
我希望能够在滚动窗口中报告平均值/最小值/最大值。
我目前正在使用 Boost 版本 1.48.0。我查看了最新版本 (1.54.0) 的文档,并没有看到那里实现了滚动最小值/最大值。
我找到了一种非 Boost 方法来跟踪滑动窗口最小值,但这似乎也不是我想要的。我不想仅仅因为它们大于/小于之前的最小值/最大值而删除值,因为这会使 rolling_mean 不准确。