#define window_size 5
float buffer[window_size] = {0};
int data_num = 0;
float sliding_average_filter(float value)
{
float output = 0;
if (data_num < window_size)
{
buffer[data_num++] = value;
output = value;
}
else
{
int i = 0;
float sum = 0;
memcpy(&buffer[0], &buffer[1], (window_size - 1) * 4);
buffer[window_size - 1] = value;
for (i = 0; i < window_size; i++) //每一次都计算,可以避免累计浮点计算误差
sum += buffer[i];
output = sum / window_size;
}
return output;
}