滚动/移动平均值(Moving Average)是一种常用的统计方法,用于平滑时间序列数据,减少数据的随机波动,从而更好地观察数据的趋势。在C++中,可以通过维护一个窗口来计算滚动平均值,窗口内的元素数量固定。
以下是一个简单的C++示例,计算简单移动平均值:
#include <iostream>
#include <vector>
#include <deque>
class MovingAverage {
private:
int windowSize;
std::deque<double> window;
double sum;
public:
MovingAverage(int size) : windowSize(size), sum(0.0) {}
void addValue(double value) {
if (window.size() == windowSize) {
sum -= window.front();
window.pop_front();
}
window.push_back(value);
sum += value;
}
double getAverage() const {
if (window.empty()) {
return 0.0;
}
return sum / window.size();
}
};
int main() {
MovingAverage ma(3); // 窗口大小为3
std::vector<double> data = {1.0, 2.0, 3.0, 4.0, 5.0};
for (double value : data) {
ma.addValue(value);
std::cout << "Current moving average: " << ma.getAverage() << std::endl;
}
return 0;
}
通过以上内容,你应该能够理解滚动/移动平均值的基本概念、优势、类型、应用场景,并能够实现一个简单的C++计算示例。如果遇到具体问题,可以根据具体情况进行调整和优化。
领取专属 10元无门槛券
手把手带您无忧上云