十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
今天就跟大家聊聊有关微信小程序开发中如何使用移动平均消除抖动,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
为临潭等地区用户提供了全套网页设计制作服务,及临潭网站建设行业解决方案。主营业务为网站制作、成都网站建设、临潭网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
增加了表盘的图形显示以后,这个小程序看起来是那么回事了。但是还有一个小毛病,数字也好,表盘的旋转速度,都不是很均匀。今天就来解决这个问题。
简单移动平均法
移动平均的计算公式如下: 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中增加了计算移动平均的处理,详细可以参考注释。
看完上述内容,你们对微信小程序开发中如何使用移动平均消除抖动有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。