卡尔曼滤波器无法计算稳定卡尔曼增益的可能原因是什么?

时间:2016-08-01 21:50:52

标签: matlab estimation kalman-filter stochastic-process state-space

我对卡尔曼滤波器有疑问。我使用卡尔曼滤波器作为状态空间模型如下:

X(k+1) = A(k)x(k)+B(k)u(k)+w(k), w(k) ∼ N(0,Q)
Y(k) = C(K)x(k)+D(k)u(k)+v(k), v(k) ∼ N(0,R)

在每个采样时间中更新状态空间矩阵(A(k),B(k),C(k),D(k)),但Q和R矩阵被认为是常数。计算卡尔曼增益(K(k))和协方差P矩阵(P(k))的方程式如下:

K(k) = (P(k)*C(k)' )/(R + C(k)*P(k)*C(k)');
Pxx(k) = (eye(n)-K(k)*C(k))*P(k)*(eye(n)-K(k)*C (k))'+K(k)*R*K(k)';%Joseph form
P(k) = A(k)*Pxx(k)*A(k)' + Q; 

我面临的问题与(A(k)-K(k)*C(k))的稳定性有关。在一些采样时间内,计算的卡尔曼增益不能稳定(A(k)-K(k)*C(k))矩阵,(A(k)-K(k)*C(k))的特征值在单位圆之外。

你能帮我解决一下这个问题的原因吗?我期待卡尔曼滤波器为我提供增益,使(A(k)-K(k)*C(k))矩阵与单位圆内的特征值保持稳定。

1 个答案:

答案 0 :(得分:0)

当系统不可观察时,可能会发生这种情况。检查可观察性矩阵

的排名
O = [C(k)
     C(k)A(k)
     C(k)A(k)^2
     ...
     C(k)A(k)^(n-1)]

其中n是状态空间的维度(即A(k)n X n矩阵)。如果排名O小于n,那么您就遇到了问题。

在matlab中,O = obsv(A,C)将计算可观察性矩阵,rank(O)将给出其排名。

希望这有帮助。