Consider a 3-point moving average using three variables for a sliding window:
double y0, y1 = 0, y2 = 0; loop over incoming data d y0 = y1; y1 = y2; // slide window y2 = d; // store new value z = (y0+y1+y2)/3.0; // compute averageWe can change the code to use an array instead of three variables:
double y[3] = { 0 }; loop over incoming data d y[0] = y[1]; y[1] = y[2]; // slide window y[2] = d; // store new value z = (y[0]+y[1]+y[2])/3.0; // compute averagethen generalize to an array of size
n
:
for( i = 0; i < n-1; ++i) // slide window y[i] = y[i+1]; y[n-1] = d; // store new value
Each time the array is shifted, the original value of y[0]
is lost and
the new data value is stored in y[n-1]
.