2011-11-22 125 views
2

我试图在过去的几秒钟内存储平均光照水平(使用光线传感器)以在比较中使用以调用另一个功能,如果当前光照水平约为平均。Android:获取平均传感器值

我的问题是我不完全确定如何去存储平均值。

我假设你将沿着

while(sensorUpdateTime + sampleTime < CurrentTime) 
    average += currentValue/updatesSampleRate; 

我就如何储存平均损失是正中下怀的线做一些事情。

回答

1

如果采样率是相当恒定的,你可以将值存储在数组中,并做“圆”的更新(使用数组[将SampleNumber%array.length]找到删掉最早的值。

然后你只。减去删掉值超出保持总和,并增加新的价值

这种方式你平均值过去array.length传感器读数而且你还可以得到方差 - 只是不停平方传感器值的总和,然后:。

sigma = sqr(MX2-MX)

+0

昨晚我在附近玩耍,我发现我可以创建一个天文台,并用它来每秒钟打勾。 但是我也认为,由于传感器只需要短时间工作,所以我不需要平均值,只需将值设置为最初打开所有内容时的值即可。 – Nexion

+0

看完这个评论后,我不明白你真正想要什么 – jap1968

0

平均值只是低通滤波器的一个特例。它会引入延迟,但如果没有问题,您可以使用它。您有一个低通滤波器实现的伪代码。您只需修改alfa参数。您可以将其应用于最后的N个值。