# Discretize process noise in Kalman filter

Reading P. Andrews et al. I see that it is very common to do the following approximation of the process noise covariance matrix:

$$Q_{k} = G_{k-1}QG_{k-1}^{T}\Delta t$$

so that the propagation becomes:

$$P_{k} = F_{k-1}P_{k-1}F_{k-1}^{T} + Q_{k}$$

however, when I try it in a simulation I need to scale it once more:

$$P_{k} = F_{k-1}P_{k-1}F_{k-1}^{T} + Q_{k}\Delta t$$

else the discretization is wrong - I am not sure why this happens.

The simulated process noise is by adding the following to the ground truth:

velocity_measured = velocity_true + sigma * np.random.randn(1)
position = position + velocity_measured * dt


so that the process noise before discretization becomes:

Q = sigma * sigma.


So, assuming the above is correct ( without the original equations, it's a little hard to tell ), the reason it's multiplied by $$\triangle t$$ twice is because there are two updates to the system noise due to discretization of the two equation process. The first update is due to the $$G_k$$ matrix multiplying the variables in the observation equation at time $$k$$. That's what causes the first $$\triangle t$$ multiplication. But then, you also have the update of the system equation at time $$k$$ due to the multiplication of the state variables by $$F_{k-1}$$. This is why $$\triangle t$$ is used a second time.