我正在努力添加一个简单的一维卡尔曼滤波器到一个应用程序,以处理一些噪声输入数据,并输出一个清洁的结果。
我使用的示例代码来自本教程和这个python代码的单变量示例部分。
这是很好的计算结果值,然而,当我第一次读到卡尔曼滤波器时,我的印象是,它们也可以用来测量输入中有多少“误差”。
举个例子,假设我测量的值为10,但是我的输入有很大的错误。我的输入数据看起来可能是6,11,14,5,19,5等等(一些高斯分布在10左右)。
但假设我切换到低噪音的测量,测量值是9.7,10.3,10.1,10.0,9.8,10.1。
在这两种情况下,卡尔曼滤波器理论上都会收敛到10的适当测量值。我想要的是,它也给我一些数值,估计这些数据流有多大的误差。
我相信这应该是很有可能的卡尔曼滤波器,然而,我有困难找到一个资源描述这一点。我该怎么做?
发布于 2014-12-20 07:49:21
事实上,情况正好相反:KF对您的过程噪声的估计完全不受您的数据的影响。如果您查看KF的预测/更新步骤,您将看到P项从未受到您的状态或度量的影响。它是根据你对加性过程噪声Q的估计和你对测量噪声R的估计来计算的。
如果您有一个数据集并想要度量它,您可以计算它的平均值和方差(这是您的状态和进程协方差所表示的)。如果你说的是你的输入,那么你是在测量你的样本的方差来设定R。
如果您的实际输入测量值比预期的要小,那么您将得到一个较小的噪音状态,但与您在R中正确设置预期时相比,延迟时间更大。
在运行中的过滤器中,您可以查看您的创新序列(预测的和实际的度量之间的差异),并将它们与您预测的创新协方差进行比较(通常称为S,尽管有时作为K的分母直接滚动)。
发布于 2014-12-18 23:15:19
卡尔曼滤波器不会给你一个关于输入中有多少“误差”的测量。您只会得到估计输出的误差。
为什么不使用在线算法来计算输入的方差呢?
https://stackoverflow.com/questions/27538729
复制相似问题