If you are using a kalman filter with multiple sensing sensors there are two ways to fuse them.

One way is doing a single observation step where you include all the sensors in a single vector and a joint observation noise covariance matrix

Another way is to update the state sequentially, once for each sensor.

I don't understand why the sequential update works. The derivation of the kalman filter shows the update is optimal using the assumed conditions - if you do a sequential update, you are updating an already updated state therefore the process noise covariance matrix would be different.

  • $\begingroup$ I'm not sure whose terminology you're using. Per the one I usually see the process noise covariance is only applied during the prediction step. Are you thinking it's applied in the update step, or are you talking about the estimate covariance (which does change with each update)? $\endgroup$
    – TimWescott
    Commented Nov 3, 2022 at 5:45
  • $\begingroup$ I will track down th link but apparently from what I read if the two sensors noise covariance are independent then sequential update is the same as doing one large update at a single time. They didn't provide a proof though. The other issue is if you have sensors with different update rates how that works. $\endgroup$ Commented Nov 3, 2022 at 19:20
  • $\begingroup$ Hah -- I just answered this question that directly pertains to your sensors of different update rates. If it doesn't, then ask another question. $\endgroup$
    – TimWescott
    Commented Nov 5, 2022 at 20:53

1 Answer 1


I just checked my favorite reference, and it goes through six pages of how without giving any why. I expect that there's some multi-page dive into linear algebra that shows it explicitly, and boy do I wish I had access to that dive.

But, here's two intuitive arguments for why it works:

First, the Kalman filter is optimal for the information it has been given. When you do a prediction step, the result is an optimal guess, based on the prior state. When you do a correction step, the result is optimal given linear combinations of states you've measured.

So, when you do a sequential correction, the correction on the first measurement is optimal for that measurement. The correction on the second measurement must be optimal for that measurement and the first one. And so on and so on, until you're done and you have a correction that's optimal for all of the measurements you have. That's the same as you'd get doing the correction all in one step, so it has to match.

This is the "just trust the assertions of the math" argument.

Second, and this is definitely a loose intuitive argument, any single-point measurement is going to narrow down the possible values of the states in exactly one direction in the states space. I.e., a measurement $y = \begin{bmatrix}1 & -1 \end{bmatrix} \mathbf x$ tells you a lot about the linear combination $x_1 - x_2$, but it tells you nothing about $x_1 + x_2$.

So as you sequence through your measurements, you'll be correcting the states first in one direction, then another, then another, until finally you're done. Note that this is sorta-kinda what you're already doing in a Kalman filter that has a lower dimension measurement than the number of states: if it's going to work at all, each iteration of the prediction step rotates the $\mathbf x$ vector (and, by extension, the $\mathbf P$ matrix), so even as each correction step only ever corrects in one direction, the result is still an overall improvement in knowledge over the whole state space.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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