# The Extended Kalman Filter: An Interactive Tutorial for Non-Experts

### Part 5: Computing the Gain

So now we have a formula we can actually use for computing the current state estimate $\hat{x}_k$
based on the previous estimate $\hat{x}_{k-1}$, the current observation $z_k$, and the current gain $g_k$:
\[ \hat{x}_k = \hat{x}_{k-1} + g_k(z_k - \hat{x}_{k-1})\]
So how do we compute the gain? The answer is: *indirectly, from the noise*. Recall that each observation is
associated with a particular noise value:
\[ z_k = x_k + v_k \]
We don't know the individual noise value for an observation, but we typically do know the average noise: for example,
the published accuracy of a sensor tells us approximately how noisy its output is. Call this value $r$;
; there is no subscript on it because it does not depend on time, but is instead a property of the sensor.
Then we can compute the current gain $g_k$ in terms of $r$:
\[ g_k = p_{k-1}/(p_{k-1} + r) \]
where $p_k$ is a *prediction error* that is computed recursively:^{[6]}
\[ p_k = (1 - g_k)p_{k-1} \]
As with the state-estimation formula, let's think about what these two formulas mean before we continue.

Let's say that the error $p_{k-1}$ on our previous prediction was zero. Then our current gain
$g_k$ will be $0/(0+r)=0$, and our next state estimate will be no different from our current state estimate.
Which makes sense, because we shouldn't be adjusting our state estimate if our prediction was accurate.
At the other extreme, say the prediction error is one. Then the gain will be $1 / (1 + r)$.
If $r$ is zero — i.e., if there is very little noise in our system — then the gain will be one, and
our new state estimate $x_k$ will be strongly influenced by our observation $z_k$.
But as $r$ grows large, the gain can become arbitrarily small. In other words, when the system is noisy enough,
a bad prediction will have to be ignored. Noise overcomes our ability to correct bad predictions.

What about the third formula, calculating the prediction error $p_k$ recursively from its previous value
$p_{k-1}$ and the current gain $g_k$ ? Again, it helps to think of what happens for extreme values of the gain: when
$g_k = 0$, we have $p_k = p_{k-1}$. So, just as with the state estimation,
a zero gain means no update to the prediction error. When on the other hand $g_k = 1$,
we have $p_k = 0$.
Hence the maximum gain corresponds to zero prediction errors, with the current observation
alone used to update the current state.

###

Previous: State Estimation
Next: Prediction and Update

[6] Technically $r$ is really the *variance* of the noise
signal; i.e., the spread, or squared average distance of individual noise values from their mean.
The Kalman Filter will work equally well if this noise variance is allowed to change over time,
but in most applications it can be assumed constant. In a likewise manner, $p_k$
is technically the *covariance of the estimation process* at step $k$;
it is the average of the squared error of our predictions. Indeed, as Tim Wilkin
has pointed out to me,
*the state is a stochastic [random-like] variable/vector (an instantaneous value of a stochastic process) and it doesn't
have a “true” value at all!* The estimate is merely the most likely value for the process model describing the state.