Path: Common/Estimation
% Implement an Unscented Kalman Filter. The filter uses numerical integration to propagate the state. The filter propagates sigma points, points computed from the state plus a function of the covariance matrix. For each state there are two sigma states. The default integrator is RK4, or you cab specify an integrator with the field d.integrator = @myIntegratorName To initialize UKF call d = UKF( 'initialize', d ); To update d = UKF( 'update', d, y ); The filter appends internal data to the data structure. d.x gives the current estimated state and d.pXX the state covariance. The measurement function is of the form meas = MeasFun( x, dMeasFun ); The state function is of the form xDot = StateFun( x, t, dStateFun ); You can use either the Cholesky transform or matrix square root to form the sigma points. -------------------------------------------------------------------------- Form: d = UKF( action, d, y ) d = UKF( 'datastructure', nStates, nMeas ) -------------------------------------------------------------------------- ------ Inputs ------ action (1,:) 'initialize' or 'update' or 'datastructure' d (.) UKF data structure .rHSFun (1,:) Name or handle of RHS function .integrator (1,:) Handle of integrator function .rHSFunData (.) RHS function data structure .measFun (1,:) Handle of measurement function .measFunData (.) Measurement function data .x (n,1) Initial state vector .p (n,n) Covariance matrix for x .pXX (n,n) Covariance after state update .dY (1,1) Number of measurements .dX (1,1) Number of states .rP (n,n) Process noise covariance .rM (n,n) Measurement noise covariance .alpha (1,1) Scaling 1e-4 <= alpha <= 1 .kappa (1,1) Secondary scaling usually 0 .beta (1,1) Prior knowledge of distribution = 2 for Gaussian distributed noise .dT (1,1) Time step .t (1,1) Time .sigmaPtAlg (1,1) 1 = sqrtm, 2 = chol y (m,1) Measurement vector verbose (1,1) Flag for verbose output. 1 = warn, 2 = error. ------- Outputs ------- d (.) UKF data structure with the following appended .dX (1,1) Number of states .n (1,1) Number of sigma points .y (m,1) Measurements based on the states .xA {n} Sigma points .pP (n,n) Covariance matrix prior to measurement .xP (n,1) State vector prior to measurement incorporation .res (:,1) Residuals -------------------------------------------------------------------------- References: Voss, H. U., Timmer, J., Kurths, J., "Nonlinear Dynamical System Identification from Uncertain and Indirect Measurements," International Journal of Bifurcation and Chaos, Vol. 14, No. 6, 2005, pp. 1905-1933. Van der Merwe, R. and Wan, E., "Sigma-Point Kalman Filters for Probabilistic Inference in Dynamic State-Space Models", --------------------------------------------------------------------------
Common: DemoFuns/GXUKF Common: DemoFuns/RHSUKF Common: Estimation/SigmaPointsChol Math: Integration/RK4
Back to the Common Module page