车辆燃油油位错误检测和加油检测c#或SQL

时间:2016-02-20 12:06:54

标签: c# tsql graph statistics

我正在使用电子燃料棒准备汽车燃料水平。

我从GPS设备连续读数,每隔1分钟发送一次数据。我目前将这些数据存储在我的Microsoft SQL数据库中,并且可以生成漂亮的图形。

我想弄清楚检测

的最佳方法是什么
  1. 加油活动
  2. 虹吸事件
  3. 阅读时有几个问题。 有时候每个燃油油位读数都会达到峰值,并回到接近前一水平的某个位置。这使得误报成为一种挑战。

    有时长时间出现尖峰(有时加油后会看到),然后燃油油位会如您所料线性下降。见下面的第二张图。

    我有ODO仪表读数和燃油液位读数(以升为单位)。

    鉴于上述问题,我需要一种方法来检测这些噪声样本,这些样本与预期的线性下降随时间的偏差很大。

    以下是2辆车的数据样本(如图)。 蓝线是实际数据。 红线是我尝试使用10个样本的平均值来尝试“平滑”大偏差。

    Fuel Level Graph for 2 Vehicles

    现在进行研究和思考: 我找到了4种不同的方法来帮助识别大的偏差。 (我认为)

    1. https://en.wikipedia.org/wiki/Step_detection
    2. https://en.wikipedia.org/wiki/Western_Electric_rules
    3. https://en.wikipedia.org/wiki/Nelson_rules
    4. https://en.wikipedia.org/wiki/Wiener_filter
    5. 我应该考虑哪些更好的选择?

      任何人都知道可以使用C#或TSQL实现的实现吗?

      任何建议或想法都会很棒。

1 个答案:

答案 0 :(得分:0)

正确的方法是制定一个模型来表示加油,虹吸和噪音过程的工作原理。该模型将包含一些自由参数(即正常燃料使用,燃料添加量,加油持续时间,燃料去除量,虹吸持续时间和噪声波动幅度,至少)。然后,事件的“检测”意味着找到使对数似然函数LL(参数)= log p(数据|参数)最大化的参数。这是你能做的最好的 - 如果你能做到这一点,你就不需要任何其他方法。其他方法可能有助于作为这种方法的近似 - 这是使用这些方法的理由。

由于模型是不连续的,因此对数似然函数也可能是不连续的。可能需要一些启发式搜索最佳拟合参数。这种启发式方法可能与已发布的方法一致 - 这很好,但不是必需的。

Seber& Wild,“非线性回归”有一个或多个关于具有不连续性的模型的章节。