UdonLibrary 1.0.0
機械システム研究部 C++ ライブラリ
読み取り中…
検索中…
一致する文字列を見つけられません
MovingAverage.hpp
[詳解]
1//
2// 移動平均クラス
3//
4// Copyright (c) 2016-2023 谷川 豊章
5// Copyright (c) 2016-2023 udonrobo
6//
7
8#ifndef DEF_MovingAverage_H
9#define DEF_MovingAverage_H
10
11namespace Udon
12{
13
15 template <size_t DataSize>
17 {
18
19 int data[DataSize];
20
21 size_t writeIndex;
22
23 long sum;
24
25 public:
29 : data()
30 , writeIndex()
31 , sum()
32 {
33 }
34
37 void update(int value) noexcept
38 {
39 sum -= data[writeIndex]; // 取り除くデータの値分だけ合計から取り除く
40 data[writeIndex++] = value; // データを更新する
41 sum += value; // 合計値に更新した値を追加する
42
43 if (writeIndex >= DataSize)
44 writeIndex = 0;
45 }
46
49 double getValue() const noexcept
50 {
51 return static_cast<double>(sum) / DataSize;
52 }
53
57 double operator()(double value) noexcept
58 {
59 update(value);
60 return getValue();
61 }
62 };
63
64} // namespace Udon
65
66#endif
移動平均クラス
Definition MovingAverage.hpp:17
double getValue() const noexcept
平均値の取得
Definition MovingAverage.hpp:49
double operator()(double value) noexcept
値の更新と平均値の取得
Definition MovingAverage.hpp:57
void update(int value) noexcept
値の更新
Definition MovingAverage.hpp:37
MovingAverage()
dataに保存されているデータの合計値
Definition MovingAverage.hpp:28
Definition Bit.hpp:12