0

我有一个关于卡尔曼滤波器的问题。我正在将卡尔曼滤波器用于状态空间模型,如下所示:

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))矩阵在单位圆内的特征值保持稳定。

4

1 回答 1

1

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

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)给出其等级。

希望这可以帮助。

于 2016-08-04T21:41:28.237 回答