Develop and Download Open Source Software

Browse Subversion Repository

Contents of /common/MovingAverage.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 279 - (show annotations) (download) (as text)
Wed Mar 12 05:28:19 2008 UTC (16 years, 1 month ago) by satofumi
File MIME type: text/x-chdr
File size: 1100 byte(s)
adjust tab index
1 #ifndef MOVING_AVERAGE_H
2 #define MOVING_AVERAGE_H
3
4 /*!
5 \file
6 \brief 移動平均の計算
7
8 \author Satofumi KAMIMURA
9
10 $Id$
11 */
12
13 namespace beego {
14 /*!
15 \brief 移動平均のテンプレート
16 */
17 template<class T> class MovingAverage {
18 MovingAverage(const MovingAverage& rhs);
19 MovingAverage& operator = (const MovingAverage& rhs);
20
21 std::deque<T> buffer;
22 size_t buffer_size;
23 T average;
24 T total;
25
26 void buffer_set(size_t size, T value) {
27 buffer.assign(size, value);
28 average = value;
29 total = average * size;
30 }
31
32 public:
33 MovingAverage(size_t size) : buffer_size(size), total(0) {
34 if (size == 0) {
35 buffer_size = 1;
36 }
37 buffer_set(buffer_size, 0);
38 }
39
40 void setAverageValue(T value) {
41 buffer_set(buffer_size, value);
42 }
43
44 T getAverage(void) {
45 return average;
46 }
47
48 void push_back(T value) {
49
50 total -= buffer.front();
51 buffer.pop_front();
52 total += value;
53 buffer.push_back(value);
54
55 average = total / static_cast<T>(buffer_size);
56 }
57 };
58 };
59
60 #endif /* !MOVING_AVERAGE_H */

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26