Dear All,
I have a question about Kalman filter. I am using kalman filter for a state space model as following:
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)
Which the state space matrixes (A(k),B(k),C(k),D(k)) are updated in each sampling time but Q and R matrixes are considered to be constant. The equations which calculate the kalman gain (K(k)) and covariance P matrix (P(k)) are as following:
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;
The problem that I face is related to stability of (A(k)-K(k)*C(k)). In some sampling times, the calculated kalman gain can not stabilize the (A(k)-K(k)*C(k)) matrix and the eigenvalues of (A(k)-K(k)*C(k)) are outside of unit circle. Could you please help me to figure out the reason for this problem? I am expecting that the kalman filter gives me the gain which make the (A(k)-K(k)*C(k)) matrix stable with eigenvalues inside the unit circle.
"Just to clarify, the state space matrixes are updated based on a subspace identification technique in each sampling time. So, I am not using an extended kalman filter. Furthermore, In each sampling time which the state space matrixes are updated, I also check the observabilty matrix of the system which is full rank all the time. I also check the controlability matrix based on (A, Q^1/2) which is full rank. Another point, in subspace identification technique which I am using, input and output data are considered from a real process without any preprocessing such as filtering."