0

Ich habe eine Frage zu Kalman Filter. Ich bin mit Kalman-Filter für einen Zustandsraummodell, wie folgend:Was sind die möglichen Gründe, wenn der Kalman-Filter keine stabilisierende Kalman-Verstärkung berechnen kann?

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) 

Welche Zustandsraum Matrizes (A(k),B(k),C(k),D(k)) in jedem Abtastzeitpunkt aktualisiert werden, aber Q und R Matrices werden als konstant angenommen. Die Gleichungen, die die Kalman-Verstärkung (K (k)) und die Kovarianz-Matrix P (P (k)) sind wie folgt zu berechnen:

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; 

Das Problem, das ich Gesicht ist, um die Stabilität von (A(k)-K(k)*C(k)) bezogen. Bei einigen Abtastzeiten kann die berechnete Kalman-Verstärkung die (A(k)-K(k)*C(k))-Matrix nicht stabilisieren, und die Eigenwerte von (A(k)-K(k)*C(k)) liegen außerhalb des Einheitskreises.

Könnten Sie mir bitte helfen, den Grund für dieses Problem herauszufinden? Ich erwarte, dass der Kalman-Filter mir die Verstärkung gibt, die die (A(k)-K(k)*C(k)) Matrix mit Eigenwerten innerhalb des Einheitskreises stabil macht.

Antwort

0

Dies kann passieren, wenn das System nicht beobachtbar ist. Überprüfen Sie den Rang der Beobachtbarkeitsmatrix

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

n wo die Dimension des Zustandsraums ist (das heißt, A(k) ist n X n Matrix). Wenn der Zeilenrang von O kleiner ist als n, dann haben Sie das Problem.

In Matlab O = obsv(A,C) berechnet die Beobachtbarkeitsmatrix und rank(O) wird seinen Rang geben.

Hoffe, das hilft.