UdonLibrary
1.0.0
機械システム研究部 C++ ライブラリ
Toggle main menu visibility
読み取り中…
検索中…
一致する文字列を見つけられません
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
11
namespace
Udon
12
{
13
15
template
<
size_t
DataSize>
16
class
MovingAverage
17
{
18
19
int
data[DataSize];
20
21
size_t
writeIndex;
22
23
long
sum;
24
25
public
:
28
MovingAverage
()
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
Udon::MovingAverage::getValue
double getValue() const noexcept
平均値の取得
Definition
MovingAverage.hpp:49
Udon::MovingAverage::operator()
double operator()(double value) noexcept
値の更新と平均値の取得
Definition
MovingAverage.hpp:57
Udon::MovingAverage::update
void update(int value) noexcept
値の更新
Definition
MovingAverage.hpp:37
Udon::MovingAverage::MovingAverage
MovingAverage()
dataに保存されているデータの合計値
Definition
MovingAverage.hpp:28
Udon
Definition
Bit.hpp:12