Boost アキュムレータを使用して、ローリング ウィンドウ全体の平均を追跡するコードがいくつかあります (「ローリング平均」)。ローリング平均に加えて、この同じローリング ウィンドウで最小値と最大値を追跡したいと考えています。
Boostアキュムレータを使用してローリング最小値とローリング最大値を計算する方法はありますか? 道が見えない…
ローリング平均に使用されるアキュムレータに最小タグと最大タグを追加しようとしましたが、それは私が望むものを与えません。
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 のドキュメントには、ローリング ウィンドウに限定されず、すべてのサンプルで最小値と最大値が計算されることが記載されています。それらは、サンプルを制限または重み付けする方法を提供しているようには見えません。
ローリングウィンドウ全体で平均/最小/最大を報告できるようにしたいと考えています。
現在、Boost バージョン 1.48.0 を使用しています。最新バージョン (1.54.0) のドキュメントを確認しましたが、ローリング最小値/最大値が実装されていません。
スライディング ウィンドウの最小値を追跡するブースト以外の方法を見つけましたが、これも私が望むものではないようです。値が以前の最小値/最大値よりも大きい/小さいという理由だけで、値を削除したくありません。これは、rolling_mean が不正確になるためです。