1

我正在关注一个关于卡尔曼滤波器的可能众所周知的教程。

从这些代码行:

figure;
plot(t,pos, t,posmeas, t,poshat);
grid;
xlabel('Time (sec)');
ylabel('Position (feet)');
title('Figure 1 - Vehicle Position (True, Measured, and Estimated)')

我明白那x是真实的位置,y是测量的位置,xhat是估计的位置。那么,如果我们可以计算x(这段代码:) x = a * x + b * u + ProcessNoise;,为什么我们还需要估计x呢?

4

2 回答 2

6

...

好的,再看一遍引用的文章后,我想我看到了混乱。显然,文章中的程序是一个线性系统的模拟(因此,它在模拟系统中反复生成新的x作为新状态)。然后它还模拟x的“嘈杂”测量,并从该(模拟的)嘈杂测量中,然后演示对嘈杂数据使用卡尔曼滤波器以尝试估计实际(模拟)x

因此,您询问的确切x计算只是模拟的一部分,而不是卡尔曼滤波器本身或卡尔曼滤波器算法可用数据的一部分。

于 2011-01-16T18:29:01.963 回答
0

卡尔曼滤波器(和一般的随机滤波器)不直接为您提供隐藏过程的估计量:它们为您提供隐藏过程的条件定律,给定观察值(所谓的滤波器定律)(*)。

如果你想要一个隐藏过程的估计器,那么你必须自己做(后验最大值,后验期望值)。对于卡尔曼滤波器,您计算的滤波器定律是高斯的,您只需更新其平均值和协方差矩阵。您可以将平均值作为信号值的估计,将协方差矩阵作为误差估计。

确保在过滤器法则(过滤器方法的输出)和隐藏信号的估计器之间做出区分。

(*) 实际上对于卡尔曼滤波器,它是线性条件定律,但是如果您假设一切都是线性的,并且噪声是高斯白噪声,那么它就是实际的条件定律。相反,粒子滤波器通过离散测量来逼近真实的滤波器定律。

于 2011-01-18T14:33:36.033 回答