Использование boost:: аккумуляторов, как я могу reset увеличить размер окна, сохранить дополнительную историю?
Я рассматриваю структуру boost:: accumulator, в частности пару вычислений roll_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 как три, так что он поддерживает среднее значение только для трех последних образцов.
Могу ли я изменить этот размер во время выполнения, возможно, на основе пользовательской настройки?
Если да, и я увеличиваю window_size, у аккумулятора есть дополнительное внутреннее состояние, если он уже видел больше, чем мой новый window_size, или мне придется ждать дополнительных значений?
Ответы
Ответ 1
Лучший способ reset аккумулятора ускорения - назначить его новому. Например:
typedef accumulator_set<int, ... template crazyness tags ... > window_acc;
window_acc acc;
acc(1);
acc(2);
...
// reset
acc = window_acc();
Собственно, swap будет предпочтительнее здесь, но у аккумулятора нет набора swap =\