使用boost :: accumulators,如何重置滚动窗口大小,是否保留了额外的历史记录?

时间:2011-03-04 15:46:33

标签: c++ boost

我正在研究boost :: accumulator框架,特别是一些rolling_window计算。

#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/rolling_mean.hpp>
accumulator_set<int, stats<tag::rolling_mean> > acc(tag::rolling_window::window_size = 3);

如您所见,我已将window_size设置为3,这样它只保留最后三个样本的平均值。

我可以在运行时修改该大小,可能是基于用户设置吗?

如果是这样,并且我增加了window_size,如果累加器已经看到超过我的新window_size,那么累加器是否有额外的内部状态,或者我是否必须等待额外的值?

1 个答案:

答案 0 :(得分:5)

重置升压累加器的最佳方法是将其分配给新的累加器。例如:

typedef accumulator_set<int, ... template crazyness tags ... > window_acc;

window_acc acc;
acc(1);
acc(2);
...
// reset
acc = window_acc();

实际上,这里首选swap,但accumulator_set没有swap成员= \