1
$\begingroup$

I want to compute the stationary Kalman filter algorithm but I haven't found any information about that algorithm ( not even the pseudo code ) so, I wonder what is the difference between the Kalman filter algorithm and the stationary Kalman filter algorithm and how I can derive it from the Kalman filter algorithm. Could someone point me out resources I can read about it?

I just found this post:

How to derive the stationary Kalman filter predictor?

and this document:

http://www.uh.edu/~bsorense/kalman.pdf on page 5.

Basically what I understand is that you calculate beforehand ( before the recursive process ) the Kalman gain and the state covariance matrix when the Kalman gain goes to infinite using these two equations:

$$\bar{P} = A\bar{P}A^T - A\bar{P}C^T ( C\bar{P}C^T + R )^{-1}C\bar{P}A^T + Q$$ $$\bar{K} = \bar{P}C^T(C\bar{P}C^T+R)^{-1}$$

and in the recursive function, this equation:

$$\hat{x}(t+1|t) = (A-A\bar{K}C)\hat{x}(t|t-1) + A\bar{K}y(t)$$

Is that correct?

Notes:

Yes, it is a question from a DSP book ( https://users.aalto.fi/~ssarkka/pub/cup_book_online_20131111.pdf excercise 4.6 on page 83 ) but there is no information in that book about the stationary Kalman filter algorithm.

$\endgroup$
2
$\begingroup$

I’m not sure what you mean by the stationary Kalman filter, but it seems to be what I would call the steady-state Kalman filter.

If that is the same thing, then you just solve for the Kalman gain at $t=\infty$ and apply the normal Kalman filter equations.

I’m not sure you mean “the Kalman gain goes to infinity” in a well-posed problem.

$\endgroup$
2
$\begingroup$

There is a slight nomenclature issue, but your question appears to want to use a Kalman Filter with a fixed gain matrix, based on solving the steady state algebraic Ricatti equation. If that is the case, simply use the fixed gain, and follow the conventional innovation and state update steps.

You need to solve for the steady state solution of the algebraic Ricatti equation for P, if you have Matlab's Control Tool Box, you can use dare() , which also calculates the gain matrix.

If you don't have the control toolbox, there is code on the web, just make sure you use the discrete version, there is a corresponding continuous time case solver so be sure that you use the correct solver. You should also be aware that there is more than one convention for the names of the matrix and forms. I once spent a frustrating night finding out I needed to transpose a particular matrix.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.