今天就跟大家聊聊有关微信小程序开发中如何使用移动平均消除抖动,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
增加了表盘的图形显示以后,这个小程序看起来是那么回事了。但是还有一个小毛病,数字也好,表盘的旋转速度,都不是很均匀。今天就来解决这个问题。
简单移动平均法
移动平均的计算公式如下: Ft=(At-1+At-2+At-3+…+At-n)/n,式中
Ft--对下一期的预测值;
n--移动平均的时期个数;
At-1,At-2,At-3和At-n分别表示前两次、前三次直至前n期的实际值。
简单的说,就是保留最近n次的值,然后求这些值的平均值。这样一来个别数据的抖动就会被其他数据中和,从而减少数据的抖动。
logs.js
Page({
data: {
angle: '--',
directions:[0, 0, 0, 0, 0]
},
//指南针描画
drawCompass: function (direction) {
//此处省略
},
//事件处理函数
onLoad: function () {
var that = this;
wx.onCompassChange(function (res) {
//在数组尾部添加新数据
that.data.directions.push(res.direction);
//从数组头部删除一个数据
that.data.directions.shift();
//数组元素求和
var total = that.data.directions.reduce(function (prev, v) { return prev + v })
//求平均值
var average = total / that.data.directions.length
that.drawCompass(average);
//保留1位小数
var direction = average.toFixed(1) + '°';
that.setData({ angle: direction })
});
},
})
主要的变化有两点:一个是在data中增加了一个名为directions的数组,并用5个0初始化;再有就是在 wx.onCompassChange中增加了计算移动平均的处理,详细可以参考注释。
看完上述内容,你们对微信小程序开发中如何使用移动平均消除抖动有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。