将它们存储在 windowSize=5: somwhere 的固定数组中,在初始化程序时:
// array of last altitudes for calculating average
int[] a = new int[windowSize];
1)当新数据到达存储在最后一个索引时:
a[windowSize - 1] = new_altitude,
2) 计算平均值。
double avg = 0;
for (int i = 0; i < windowSize; i++) {
avg += a[i];
}
avg = avg / windowSize;
3) 将所有数组元素复制到当前索引 - 1,以便为下一个元素留出空间。
for (int i = 1; i < windowSize; i++) {
a[i-1] = a[i];
}
而已。
在实践中,如果窗口没有完全填充,它会变得非常复杂,所以在输出平均值之前等到你的数组完全填充。
根据您的应用程序,您可以将第 3 步)作为第一步,这样做的好处是 a[] 中的元素始终是真实的现有数据。
因此,从纯粹的角度来看,步骤 3)、1)、2) 的顺序要好一些。