试下匠人手记10上的那种滤波算法,就是 一阶滞后滤波之深入研究,大概实现的方法就是取a=0~1
本次滤波结果=(1-a)*本次采样值+a*上次滤波结果。
a的值越大则滤波的平滑度越高,a越小则滤波的反应速度越快
动物的晃动应该是和匠人手记里的波形图一样的是上下波动的。
这样的话,可以先设定一个高的a,获得好的平滑度。
假如实际波形比滤波后的波形大,则计数器+1
但计数器达到某个阈值的时候,a变大,以跟上实际波形的变化。
但如果在但计数器达到某个阈值之前,实际波形比滤波后的波形小了。
则计数器清零。
反之亦然。:)
这样的话在动物刚放上称的时候,由于a很小,所以显示的重量值缓慢上升,但实际重量值一直是在
显示的重量值之上的,所以计数器不断增大,到了阈值后,时间也许过去几秒钟了,a变大,显示重量值
迅速跟上实际重量值,直到实际重量值比显示重量值低了,然后a重新变小,显示重量值变化变的缓慢。
由于动物晃动的时候。实际重量值偏离了显示重量值,计数器不断增大,但假如在计数器达到阈值之前,
实际重量值又反弹了,计数器就会被清零,而不会出现大的波动。
所以动物称的关键是计数器阈值的选定,和a的选定,
计数器阈值的选定要让反应时间大于动物晃动的间隔,可以设定菜单选择不同的晃动间隔,以适应
不同的动物
a的选定要兼顾反应速度和平滑度,可以选择多级的a,比如0.1 0.2 0.3 0.5 假如计数器溢出则a在相邻
的值里选择。
匠人手记是本不错的书,推荐购买,试阅的话可以到百度文库…… |