java - 燃料图平滑算法

标签 java algorithm math statistics

我正在开发车队管理系统,其中一项任务是显示表示车辆油耗的图表(基于来自 CAN bus 的数据)。

如果数据值介于 0 和 100 之间,则表示百分比。所以,如果我得到一个整数 45,这意味着油箱中的燃料是 45%。

但是,如果载具在移动,由于船舶的物理特性,可能会出现不一致的数据。例如,一个数据系列可能是:

76,76,75,74,73,73,71,70 <- 这是一个很好的模式,因为它显示了燃料是如何下降的。

76,70,75,76,77,76,74,74,73,72,69,72,73,73,72,71 <- 这不是一个好的模式,因为燃料在tank 不一致,我收到的数据不适合显示给用户。

我想平滑这些值,但是根据我选择一次平均多少个值,结果是不同的。

关键问题是,有时我必须在图表中显示一些消耗和补充能量的时刻,并且不能平滑。

我可以使用什么样的算法来分析并以令人信服的方式向用户展示我的图表?

最佳答案

有没有办法确定何时加油/排水?如果是这样,那么您可以在那些时候动态地更改您的算法。

否则,我建议使用指数平滑。

令 d (0 <= d < 1) 为前一个数字的权重因子。 所以 displayed_number = prev_data*d + new_data*(1-d)

有了适当的权重因子,“颠簸”似乎会被消除,但同时结果会反射(reflect)燃料事件。

这不是唯一的选择,更多的是示例算法,但我希望您觉得它有用。

小编辑:我没有意识到指数平滑有一个专有名称。我只是在我创建的游戏中显示帧速率时使用了该技术。所以,谢谢 Kemper。

关于java - 燃料图平滑算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17244005/

相关文章:

java - 打印 Java8 中所有支持的 URL 方案

java - Polarion ALM SDK API getWorkItem()

java - maven会改变我的项目的名称,如何阻止它?

algorithm - 按顺序找到k个最大的元素

java - 我如何用 Java 编写一个函数来打印小于 n 的完全数?

Java 安全策略 : granting access depending on classloader

algorithm - 数组可以比排序更有效地分组吗?

javascript - 时间复杂度 - 错误的递归 - British Change Combinations

php - 如何获取十进制数左右两边的位数

java - 问题 28 - 更多平方根 - 简单的任务,但我不知道为什么我错了