Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | /** | |||
2 | * @file exp_average.h | |||
3 | */ | |||
4 | ||||
5 | #pragma once | |||
6 | ||||
7 | class ExpAverage { | |||
8 | public: | |||
9 | 14 | float initOrAverage(float value) { | ||
10 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 9 times.
|
2/2✓ Decision 'true' taken 5 times.
✓ Decision 'false' taken 9 times.
|
14 | if (current == 0) { |
11 | 5 | current = value; | ||
12 | 5 | return current; | ||
13 | } | |||
14 | 9 | return average(value); | ||
15 | } | |||
16 | ||||
17 | 622 | float average(float value) { | ||
18 | 622 | current = smoothingFactor * value + (1 - smoothingFactor) * current; | ||
19 | 622 | return current; | ||
20 | } | |||
21 | ||||
22 | 2 | void init(int length) { | ||
23 | 2 | setSmoothingFactor(2 / (length + 1.0)); | ||
24 | 2 | } | ||
25 | ||||
26 | 14 | void setSmoothingFactor(float p_smoothingFactor) { | ||
27 | 14 | smoothingFactor = p_smoothingFactor; | ||
28 | 14 | } | ||
29 | ||||
30 | void reset() { | |||
31 | current = 0; | |||
32 | smoothingFactor = 0.5; | |||
33 | } | |||
34 | ||||
35 | private: | |||
36 | float current = 0; | |||
37 | float smoothingFactor = 0.5; | |||
38 | }; | |||
39 |