无迹卡尔曼滤波器负协方差矩阵

机器算法验证 机器学习 贝叶斯 信号处理 计算统计 卡尔曼滤波器
2022-03-21 19:01:37

我最近开始研究无味卡尔曼滤波器。我编写了数值稳定版本(即平方根卡尔曼滤波器)并使用 MATLAB 来实现。在最后的更新步骤中,我们使用cholupdate我更新状态协方差矩阵得到一个错误。

Pk = cholupdate(expected_S,K*Sy,'-')

基本上,expected_S'*expected_S-(K*Sy)*(K*Sy)'不是半正定的(其中expected_P=expected_S'*expected_S;),因此cholupdate返回错误。

我不明白为什么在平方根实现中会发生这种情况。(我检查了推导和编码似乎没有发现错误。)

PS:我目前正在 UKF 上测试线性模型,只是为了检查它是否最适合线性模型,但我不断收到上述错误(对于局部线性趋势模型)。

1个回答

我也有这个问题。但是,我意识到根据您修复的协方差,它不会发生。如果我设置了一个不切实际的协方差矩阵,则会发生错误。这让我认为这可能是使协方差矩阵非正定的数值错误问题。

但是,正如您所说,在 SRUKF 的正常行为中,这根本不应该发生,协方差矩阵被确保是对称的和半正定的。

我建议做一个测试。尝试测量数据的协方差,然后设置这些值。

我希望它有帮助!