**Kalman Filter (KF)**

Linear dynamical system (Linear evolution functions)

**Extended Kalman Filter (EKF)**

Non-linear dynamical system (Non-linear evolution functions)

Consider the following non-linear system:

Assume that we can somehow determine a reference trajectory

Then:

where

For the measurement equation, we have:

We can then apply the standard Kalman filter to the linearized model

How to choose the reference trajectory?

Idea of the extended Kalman filter is to re-linearize the model around the most recent state estimate, i.e.

The

**Extended Kalman Filter (EKF)**has become a standard technique used in a number of
# nonlinear estimation and

# machine learning applications

#State estimation

#estimating the state of a nonlinear dynamic system

#Parameter estimation

#estimating parameters for nonlinear system identification

#e.g., learning the weights of a neural network

#dual estimation

#both states and parameters are estimated simultaneously

#e.g., the Expectation Maximization (EM) algorithm

MATLAB CODE

########################################################################

function [x_next,P_next,x_dgr,P_dgr] = ekf(f,Q,h,y,R,del_f,del_h,x_hat,P_hat);

% Extended Kalman filter

%

% -------------------------------------------------------------------------

%

% State space model is

% X_k+1 = f_k(X_k) + V_k+1 --> state update

% Y_k = h_k(X_k) + W_k --> measurement

%

% V_k+1 zero mean uncorrelated gaussian, cov(V_k) = Q_k

% W_k zero mean uncorrelated gaussian, cov(W_k) = R_k

% V_k & W_j are uncorrelated for every k,j

%

% -------------------------------------------------------------------------

%

% Inputs:

% f = f_k

% Q = Q_k+1

% h = h_k

% y = y_k

% R = R_k

% del_f = gradient of f_k

% del_h = gradient of h_k

% x_hat = current state prediction

% P_hat = current error covariance (predicted)

%

% -------------------------------------------------------------------------

%

% Outputs:

% x_next = next state prediction

% P_next = next error covariance (predicted)

% x_dgr = current state estimate

% P_dgr = current estimated error covariance

%

% -------------------------------------------------------------------------

%

if isa(f,'function_handle') & isa(h,'function_handle') & isa(del_f,'function_handle') & isa(del_h,'function_handle')

y_hat = h(x_hat);

y_tilde = y - y_hat;

t = del_h(x_hat);

tmp = P_hat*t;

M = inv(t'*tmp+R+eps);

K = tmp*M;

p = del_f(x_hat);

x_dgr = x_hat + K* y_tilde;

x_next = f(x_dgr);

P_dgr = P_hat - tmp*K';

P_next = p* P_dgr* p' + Q;

else

error('f, h, del_f, and del_h should be function handles')

return

end

##############################################################################

For more

https://drive.google.com/folderview?id=0B2l8IvcdrC4oMzU3Z2NVXzQ0Y28&usp=sharing

## Post a Comment