代码之家  ›  专栏  ›  技术社区  ›  Vicky

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

  •  4
  • Vicky  · 技术社区  · 16 年前

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

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

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

    我想知道的是,它使用的是哪种奇怪的平均算法,可以产生这种效果。我真不敢相信,除了总距离/总时间之外,它还做着什么花哨的事情。我想这一定是某种舍入/边界条件,但我不知道是什么。有什么建议吗?

    [我在办公室里问过这个问题,但是除了这个没有人有其他想法,我应该停止担心这些细节!嘿,我得想想 某物 当我骑自行车时,每条路有9英里……]

    6 回复  |  直到 14 年前
        1
  •  6
  •   AShelly    16 年前

    这不是一个跑步平均值,应该是整个旅程的平均值,对吧?至少这是我一直以为自己在做的。

    我也注意到了这种影响。我的理论是,它用于平均值的时钟和距离计数器的分辨率都很低,所以有时当距离计数器保持稳定时,时钟计数器会加速,你就会得到下降。例如:

    dist time   spd
    8.5 40.1   12.72
    8.5 40.2   12.69
    

    如果它们使用的是整数处理器和定点,则截断将使放置看起来更大。

        2
  •  15
  •   Loren Pechtel    16 年前

    我想它有一定数量的数据点的历史,并显示它们的平均值。随着时间的推移,旧点被推掉了。

    如果你在这一点上走得更快,足够远,回到历史的尽头,推掉一个点会降低你的平均水平。

        3
  •  5
  •   samoz    16 年前

    这真是一种激励技巧。

        4
  •  3
  •   Henk Holterman    16 年前

    它可能使用类似于 Remaining time estimation 算法。

        5
  •  0
  •   Martin Beckett    16 年前

    这是车轮转动之间的时间间隔,但由于路面颠簸或噪音,它很容易错过传感器上磁铁的传递。
    所以你测量一个数据点的速度是正确值的一半,然后它做一个运行平均值,这样坏点会污染接下来几圈的速度。

        6
  •  0
  •   plastic chris    16 年前

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

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

    因此,为了更新平均值,它必须删除其中一个存储点才能获得新的平均值,如果删除的点是 更快 比你现在的速度快, moving average 会掉下来。