刚才的滑动平均滤波器,时间复杂度是O(n)(设每次处理n个采样)。
可以优化为O(1)的形式:
int buf[8];
int k=0;
int result=0;
int lowpass()
{
result -= buf[k];
buf[k] = ADC();
result += buf[k];
k = (k + 1) % 8;
return result;
}
可以优化为O(1)的形式:
int buf[8];
int k=0;
int result=0;
int lowpass()
{
result -= buf[k];
buf[k] = ADC();
result += buf[k];
k = (k + 1) % 8;
return result;
}