Algorithm 我的自行车电脑使用的是什么奇怪的平均算法?

Algorithm 我的自行车电脑使用的是什么奇怪的平均算法?,algorithm,language-agnostic,average,Algorithm,Language Agnostic,Average,我的自行车电脑可以显示各种数字,如行驶距离、经过的时间、最大速度、平均速度、当前速度等。我通常将其设置为显示当前和平均速度 您可以在任意点重置距离和时间(两者一起);计算自上次重置以来的最大和平均速度。距离是从车轮传感器(您必须首先校准它以告诉它您车轮的周长)获取的,时间是从它自己的实时时钟获取的 现在,当我骑自行车时,我经常会以远高于显示的平均速度行驶,但显示的平均速度会下降。举个具体的例子,今天晚上我骑车回家,我目前的速度保持在19.5英里/小时;我的平均时速是12.6英里,当我看到它时,它

我的自行车电脑可以显示各种数字,如行驶距离、经过的时间、最大速度、平均速度、当前速度等。我通常将其设置为显示当前和平均速度

您可以在任意点重置距离和时间(两者一起);计算自上次重置以来的最大和平均速度。距离是从车轮传感器(您必须首先校准它以告诉它您车轮的周长)获取的,时间是从它自己的实时时钟获取的

现在,当我骑自行车时,我经常会以远高于显示的平均速度行驶,但显示的平均速度会下降。举个具体的例子,今天晚上我骑车回家,我目前的速度保持在19.5英里/小时;我的平均时速是12.6英里,当我看到它时,它向下点击到12.5英里

我想弄清楚的是,它使用了什么样的奇异平均算法,可以产生这种效果。除了总距离/总时间,我简直不敢相信它在做任何花哨的事情。我猜这一定是某种舍入/边界条件,但我不知道是什么。有什么建议吗


[我在办公室里问过这个问题,但没有人想到我应该停止担心这些细节!嘿,我骑车时必须考虑一些事情,每程9英里…]

我猜它有一定数量数据点的历史记录,并显示它们的平均值。随着时间的推移,旧的点会被推开


如果你在这一点上跑得快到足以成为历史的终点,那么推开一个点会降低你的平均速度。

它可能使用了与算法类似的方法。

这确实是一种激励性技术。

这是车轮旋转之间的计时,但很容易错过传感器上的磁铁由于道路颠簸或噪音。

所以你测量一个数据点正确值的一半的速度,然后它做一个运行平均值,这样坏点会污染接下来几圈的速度

系统需要以某种(可能是恒定的)速率采样

为了计算移动平均值,它最多只存储N个数据点


因此,为了更新平均值,它必须删除其中一个存储的点以获得新的平均值,如果删除的点比您当前的速度快,则平均值将下降。

这不是运行平均值,应该是整个行程的平均值,对吗?至少我一直以为我自己也在这么做

我也注意到了这种效果。我的理论是,时钟和它用来计算平均值的距离计数器的分辨率都很低,所以有时候,当距离计数器保持稳定时,时钟计数器会滴答作响,你会得到倾斜。例如:

dist time   spd
8.5 40.1   12.72
8.5 40.2   12.69

如果他们使用的是整数处理器和定点,截断会使下降幅度看起来更大

我同意,我认为你遇到了一个历史边界条件。让我们来了解一下为什么自行车会使用移动平均值:假设你一直骑着自行车,你的速度也在不断提高。如果自行车使用非移动平均线,由于数据点的数量不断增加,你的进度似乎被人为地减慢,即使事实上你的进度相当稳定。我不相信这是移动平均线。出行平均值更容易计算。b) 作为一个骑自行车的人,我更感兴趣。重置按钮可以防止Dan提到的“减速效应”。你必须有一个移动平均线,因为如果你没有,最终你的速度会变成一个单一的值,无论你做什么都很难改变。它也应该做旅行的事情,但一段时间后可能会恢复到使用比整个旅行更少的数据点。此外,当你想到它的真实名称——“滚动”平均值时,自行车电脑当然会用到它。是的,自行车电脑有一个移动平均值——它被称为“当前速度”,窗口非常小——我想大概是1秒钟。这就是OP所描述的“保持19.5%的稳定”。但我确信“bizzare”是“平均行程”,应该是重置后的距离/时间。是的,如果你不重置,它最终会稳定。我想这应该是一个自行车编程标签。谁是制造商?等一下。你会编程吗?在自行车上?我们真的需要一个
自行车编程
标签吗?是的,你可以:哎呀,直到我提交才看到其他答案。一定是开了一段时间了。很抱歉重复。这是一个合理的解释,说明了设备可能如何进行“当前速度”读取。但是,它不需要使用运行平均值来计算行车平均速度,只需要计算总距离/总时间。此外,在磁铁通过传感器的时间间隔内,自行车计算机需要一些时间才能超时。