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

3
我正在为一个应用程序添加一个简单的一维卡尔曼滤波器,以处理一些嘈杂的输入数据并输出一个清洁的结果。
我使用的示例代码来自这个教程这个Python代码中的单变量示例部分。
这对于计算结果值非常有效,但是当我第一次了解卡尔曼滤波器时,我认为它们也可以用于提供有关输入中有多少“错误”的一些测量信息。
例如,假设我在测量一个值为10的值,但我的输入存在大量误差。我的输入数据可能看起来像6、11、14、5、19、5等(围绕10的某个高斯分布)。
但是,如果我切换到一个更少嘈杂的测量,测量值为9.7、10.3、10.1、10.0、9.8、10.1。
在这两种情况下,卡尔曼滤波器理论上将收敛到正确的测量值10。我想要的是还有一种数值估计这些数据流中有多少误差。
我相信这应该是可能的,而我正在尝试找到描述这一点的资源。我该怎么做呢?
2个回答

4
事实上,情况恰恰相反:KF对您的过程噪声的估计不受您的数据影响。如果您查看KF的预测/更新步骤,您会发现P项从未受到您的状态或测量的影响。它是根据您对加性过程噪声Q和测量噪声R的估计计算的。
如果您有一个数据集并希望进行测量,可以计算其均值和方差(这就是您的状态和过程协方差表示的内容)。如果您谈论的是您的输入,则是在测量样本的方差以设置R。
如果您的实际输入测量比预期的噪声小,则会获得较少噪声的状态,但延迟时间比正确设置R时更长。
在运行滤波器时,您可以查看创新序列(预测和实际测量之间的差异)并将其与预测的创新协方差(通常称为S,尽管有时直接作为K的分母滚入其中)进行比较。

谢谢。我把输入的方差和结果P项搞混了,像你想的那样,我查看了数学公式,对于P没有受到实际输入数据的影响感到困惑,但现在我理解得更清楚了。 - Nick

0

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

为什么不使用在线算法来计算输入的方差呢?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接