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))的特徵值在單位圓之外。

你能幫我弄清楚這個問題的原因嗎?我期待卡爾曼濾波器給我增益,使矩陣在單位圓內的特徵值穩定。

回答

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)將給出它的等級。

希望這會有所幫助。