使用卡尔曼滤波器估计误差

时间:2014-12-18 03:19:28

标签: kalman-filter

我正在努力为应用程序添加一个简单的1-D卡尔曼滤波器,以处理一些噪声输入数据并输出清晰的结果。

我使用的示例代码来自this tutorialthis python code的单变量示例部分。

这对于计算结果值非常有效,但是,当我第一次阅读关于卡尔曼滤波器时,我的印象是它们也可以用于测量多少"错误"在输入中。

作为一个例子,假设我测量的值为10,但我的输入有很多错误。我的输入数据可能看起来像6,11,14,5,19,5等(一些高斯分布在10左右)。

但是我说切换到噪声较小的测量,测量值分别为9.7,10.3,10.1,10.0,9.8,10.1。

在这两种情况下,卡尔曼滤波器理论上会收敛到10的正确测量值。我想要的是它还能给我一些数值来估算这些数据流中有多少误差。

我相信使用卡尔曼滤波器应该很有可能,但是,我很难找到描述这种情况的资源。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

事实上情况正好相反:KF对您的过程噪音的估计完全不受您的数据的影响。如果您查看KF的预测/更新步骤,您会发现P项永远不会受到您的状态或测量的影响。它是根据 对加性过程噪声Q的估计和 对测量噪声R的估计来计算的。

如果您有数据集并想要测量它,您可以计算其均值和方差(这是您的状态和过程协方差所代表的)。如果您正在谈论输入,那么您正在谈论测量样本的方差以设置R。

如果您的实际输入测量实际上比预期的噪声低,那么您将获得较少的噪声状态,但是如果您在R中正确设置了预期,则延迟时间会更长。

在正在运行的过滤器中,您可以查看您的创新顺序(预测和实际测量之间的差异),并将它们与您预测的创新协方差进行比较(通常称为S,尽管有时直接作为K的分母直接滚动)。

答案 1 :(得分:0)

卡尔曼滤波器不会测量输入中有多少“误差”。您只会得到估计输出的误差。

为什么不使用online algorithm来计算输入的方差?