恭喜,你发布的帖子
发布于 2019-05-10 15:35:34
4楼
我觉得楼主的思路不对,做平均计算应该是运行起来后是连续进行的,不应该有3600秒之后清零重新来的动作,而应该是3600秒之后把第1秒的数据舍掉,把最后1秒的数据加进来再除以3600。当然了,做一个3600秒的移动平均值我觉得用不到,几十秒足够了,我的做法是做一个类似堆栈的数组,DB0~DB9(以10个为例),每秒到来都是堆栈前移一位,新数据放到DB9,当11秒时DB0的数据被丢掉,DB9里放的是第11秒的数据,这样我们就有了一个不断前移的数据队列,把这个队列累加除以10就得到平均值结果。前10秒的数据不准确,可以忽略不用,如果想相对准确可以在程序运行的第一个周期把AI值赋给DB0~DB9。这种算法可以只固定采样数量,如果要改变滤波周期可以通过修改采样周期来实现。
请填写推广理由:
分享
只看
楼主