千家信息网

微信小程序开发中如何使用移动平均消除抖动

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,今天就跟大家聊聊有关微信小程序开发中如何使用移动平均消除抖动,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。增加了表盘的图形显示以后,这个小程序
千家信息网最后更新 2025年12月01日微信小程序开发中如何使用移动平均消除抖动

今天就跟大家聊聊有关微信小程序开发中如何使用移动平均消除抖动,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

增加了表盘的图形显示以后,这个小程序看起来是那么回事了。但是还有一个小毛病,数字也好,表盘的旋转速度,都不是很均匀。今天就来解决这个问题。

简单移动平均法


移动平均的计算公式如下: 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中增加了计算移动平均的处理,详细可以参考注释。


看完上述内容,你们对微信小程序开发中如何使用移动平均消除抖动有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0