我最近开始研究无味卡尔曼滤波器。我编写了数值稳定版本(即平方根卡尔曼滤波器)并使用 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 上测试线性模型,只是为了检查它是否最适合线性模型,但我不断收到上述错误(对于局部线性趋势模型)。