卡尔曼滤波器何时与移动平均线不同?

信息处理 过滤器 信号分析 卡尔曼滤波器 状态空间 贝叶斯估计
2022-01-15 09:37:21

该线程询问离散时间卡尔曼滤波器何时更好/不同于观察的简单移动平均值:

为什么使用卡尔曼滤波器而不是保持运行平均值

没有确定的答案。有人可以给出一个明确的例子,其中卡尔曼滤波器(理想情况下在简单的一维情况下)做的事情与保持移动平均线不同(并且更好),并说明卡尔曼滤波器何时会减少到简单移动平均线的条件?

一种想法是卡尔曼滤波器不会平等地权衡所有数据点,因为它的方差最初较小并且随着时间的推移变得更好。但听起来这只对初始观察值很重要,一旦方差收敛,卡尔曼滤波器就会像移动平均值一样对每个观察值进行同等加权,所以不要看到两者何时不同以及为什么/何时滤波器会做得更好。

3个回答

我不会添加任何方程式,我只会添加一些直觉。
我还将限制我自己的加性高斯白噪声。

现在,在这种情况下,卡尔曼滤波器可以写成最小二乘问题来解决。
我会说更多,卡尔曼滤波器是线性的,如果你有样本到一定时间T,您可以将卡尔曼滤波器写为所有先前和当前样本的加权和。此外,如果我们假设没有过程噪声,它会与最小二乘回归滤波器发生冲突。

那么是什么让它如此特别呢?3 件事使它变得特别:

  • 它的形式——作为递归过滤器,很容易在有限的计算资源中实现。
  • 过程噪声概念 - 也就是说,它不假设模型是完全已知的,这使它成为自适应滤波器,它在每次迭代中校正其权重(对于所有样本!!!)。
  • 非平稳噪声 - 处理非平稳过程的能力,即其噪声(过程和测量)随时间变化的过程。

正如第一个答案(投票最多)所说,卡尔曼滤波器在信号变化的任何情况下都更好。 注意问题陈述这些使用算法来估计一些恒定电压。使用卡尔曼滤波器如何比保持运行平均值更好?这些例子只是过滤器的过度简化用例吗?使用卡尔曼滤波器来估计恒定电压绝对是矫枉过正。在那个特定问题中,最好使用运行平均值,我们知道它是高斯分布的最佳估计量。在本例中,测得的电压是实际电压 V,但有一些噪声通常建模为 0 均值高斯(白噪声)。所以我们的测量是高斯的,平均值=V,sigma=sigma 噪声。

卡尔曼滤波器更适合估计随时间变化的事物。最明显的例子是跟踪移动的物体。让我们想象一下扔一个球,我们知道它会形成抛物线,但我们的估算器会显示什么?

卡尔曼滤波器将非常接近实际轨迹,因为它表示最近的测量值比旧的测量值更重要(当协方差较低时)。运行平均值平均采用所有测量值

在此处输入图像描述

蓝球轨迹,红球平均线

(对不起,没有卡尔曼,如果我有时间,我会把它扔在那里,但如果你对系统建模得很好,我会更接近蓝线)

在此处输入图像描述 方程式由维基百科提供

另一方面,卡尔曼滤波器表示,如果我们的协方差和残差很小(意味着我们有一个很好的估计),那么我们将坚持不使用先前的估计,并根据残差(或我们的估计误差)稍微调整一下)。现在由于我们的 xhat k|k 非常接近实际状态,所以当我们进行下一次更新时,我们将使用与实际状态非常匹配的系统状态。

在 x=30 时,运行平均值表明,初始条件 y(0) 与 y(29) 一样重要,就是这样,你会得到一个巨大的错误。卡尔曼滤波器解释了这一点。它说由于我们上次的错误很大,让我们对我们的估计(我们的 xhat)做一个大的改变,所以当我们将它用于下一次更新时,它会更接近实际发生的情况

我希望这有点道理

- - - - - - - - - - - - -编辑 - - - - - - - - - - - - --------

我刚刚注意到您的问题是关于移动平均线与卡尔曼的关系。我回答了 running avg vs kalman (这是您提供的链接的主题)

在此处输入图像描述

只是为了向移动(窗口)平均值添加更多信息。移动平均线是对变化值的更好估计。因为它只考虑最近的样本。不幸的是,它有一个滞后,特别是在改变导数的时候(只要看看 t=30 附近,导数从正变为负)。这是因为平均看波动缓慢。这通常是我们使用它来消除波动(噪音)的原因。窗口大小也起作用。较小的窗口通常更接近测量值,这很有意义并且听起来不错,对吧?这样做的缺点是,如果您有嘈杂的测量,小窗口意味着更多的噪声出现在输出中。我们再来看看另一个问题

平均值 = .5,sigma = .1 的测量值;

z = [0.3708435, 0.4985331, 0.4652121,...

前 3 个样本的平均值为 0.4448629,并不完全接近 0.5 的预期值。这再次表明,对于较小的窗口,噪声对输出的影响更大。

因此,从逻辑上讲,我们的下一步是采用更大的窗口,以提高我们的抗噪能力。好吧,事实证明更大的窗口更慢地反映实际变化(再次查看我的图表中的 t=30),最极端的窗口情况基本上是运行平均值(我们已经知道这对更改数据不利)

现在回到神奇的卡尔曼滤波器。如果您认为它类似于 2 个样本窗口平均值(相似不一样)。查看更新步骤中的 X k|k ,它采用先前的值,并向其添加当前样本的加权版本。你可能会想,那么噪音呢?为什么它不像小样本量的窗口平均值那样容易受到同样的问题影响?因为卡尔曼滤波器考虑了每次测量的不确定性。权重值 K(卡尔曼增益)可以看作是您估计的协方差(不确定性)与当前估计的协方差(不确定性)之间的比率(实际上是残差,但这样想起来更容易) . 因此,如果最近的测量有很多不确定性,K 会降低,因此最近的样本会发挥较小的作用。如果最新测量的不确定性小于预测,k 增加,现在新信息在下一次估计中发挥更大的作用。因此,即使样本量很小,卡尔曼滤波器仍能阻挡大量噪声。

无论如何,我希望现在回答“windowed avg vs kalman”问题

另一种看法:卡尔曼滤波器让您可以添加更多关于您正在过滤的系统如何工作的信息。换句话说,您可以使用信号模型来改善滤波器的输出。

当然,当您期望接近恒定的输出时,移动平均滤波器可以提供非常好的结果。但是,一旦您正在建模的信号是动态的(想想语音或位置测量),那么与卡尔曼滤波器的作用相比,简单的移动平均滤波器将不会足够快(或根本不会)发生变化。

卡尔曼滤波器使用信号模型,该模型捕获您对信号如何变化的了解,以根据“真实”的方差来改善其输出。