卡尔曼滤波器中状态噪声方差变为负数的可能原因?

机器算法验证 卡尔曼滤波器 数字
2022-03-25 08:45:17

我在调试线性离散卡尔曼滤波器的应用程序时遇到了一些麻烦。有时,我发现协方差矩阵的对角线元素变为负数。这显然是错误的,会导致整个过滤器爆炸。

此问题的可能原因和补救措施是什么?如果误差测量更新表示为,我知道舍入误差存在一个已知问题

=(一世-ķH)-1

所以我已经实现了这一点,正如几个来源所建议的那样,

=(一世-ķH)-1(一世-ķH)+ķRķ

这应该是两个正定矩阵的和,确保是肯定的。在我的情况下,情况并非如此。元素变为负值的原因不是小的舍入误差值,而是与正元素的可比值。

至此,我的卡尔曼滤波器实现已经非常坚固,所以我认为没有任何明显的错误。我以前没有遇到过这个问题。我正在玩导致这些错误的新数据集。

在这一点上,我能想到的主要怀疑是,有时,整个列H矩阵可以为零。回想起那个H定义为

z=HX-1

在哪里z是测量值和X状态向量。正如我所说,有时整列H为零,这意味着在给定时间步长的测量中没有包含有关某些特定状态的任何信息的测量。这可能是一个问题,但另一方面,我希望过滤器可以简单地保持该状态不变,并在其方差中添加一些过程噪声,而不会出现任何重大戏剧性事件。我觉得这种情况一定发生在其他一些数据集之前,没有任何不良影响。

我还能在哪里查看问题出在哪里?H矩阵包含负值,但这不应该是一个问题。ķ有时也是负数,但是遵循过滤器构造的逻辑,H这导致了负面影响ķ应该在误差测量更新步骤中取消。显然,这并没有发生。

是否有任何标准方法来确保我需要在这里使用的卡尔曼滤波器的稳健性,或者关于在哪里寻找原因的任何其他建议?

0个回答
没有发现任何回复~