我正在尝试存储过去几秒内的平均光照水平(使用光线传感器),以便在当前光照水平约为平均值的25%的情况下用于比较调用其他功能。
我的问题是我不完全确定如何存储平均值。
我假设你会按照
的方式做点什么while(sensorUpdateTime + sampleTime < CurrentTime)
average += currentValue / updatesSampleRate;
我对如何存储平均值感到茫然。
答案 0 :(得分:1)
如果采样率非常稳定,则可以将值存储在数组中并执行“循环”更新(使用array [sampleNumber%array.length]查找要删除的最旧值。
然后,您只需从保留的总和中减去已消除的值,然后添加新值。
通过这种方式,您可以获得平均过去的array.length传感器读数。你也可以得到方差 - 只需保持平方传感器值的总和,然后:
sigma = sqr(MX2 - MX)
答案 1 :(得分:0)
平均值只是低通滤波器的一个特例。它会引入延迟,但如果没有问题,你可以使用它。您有here伪代码用于低通滤波器实现。您只需修改alfa
参数即可。您可以将此值应用于最后N个值。