Используя boost :: аккумуляторы, как я могу сбросить размер скользящего окна? - PullRequest
10 голосов
/ 04 марта 2011

Я смотрю на платформу boost :: аккумулятора, в частности пару вычислений 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 равным трем, так что оно поддерживаетсреднее среднее значение только для трех последних выборок.

Могу ли я изменить этот размер во время выполнения, возможно, исходя из пользовательских настроек?

Если это так, и я увеличу window_size, будет ли аккумуляториметь дополнительное внутреннее состояние, если он уже видел больше, чем мой новый window_size, или мне нужно ждать дополнительных значений?

1 Ответ

5 голосов
/ 04 марта 2011

Лучший способ сбросить бустовый аккумулятор - назначить его новому. Например:

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

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

На самом деле, здесь предпочтительнее использовать swap, но для аккумулятора не требуется член подкачки = \

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...