Code covered by the BSD License  

Highlights from
UD Factorization & Kalman Filtering

UD Factorization & Kalman Filtering

by

 

15 Aug 2011 (Updated )

UD and LD factorization of nonnegative matrices and associated Kalman filter implementations.

readme.m
% README: Contents UD & LD Toolbox
%
% To enhance the efficiency and accuracy of Kalman filter computations, 
% in particular the time and measurement updates, UD factorization is employed. 
% An interesting feature of the current implementation is the extension to semi-positive 
% (nonnegative) matrices and systems with a time-varying state dimension. 
% The matlab implementation is through both m files and mex files written in c. 
% The mex files speed up the computations which contain several for loops.
% Use the function mexudu to compile all .c mex files in the current folder
% 
% As a complete mirror image of UD factorization, LD factorization may be employed. 
% Depending on the application, one may have an advantage over the other. 
% Or, to obtain computational symmetry, both may be required. 
% Therefore dual to each UD function a dual LD version is provided.
%
% References:
% Factorization methods for discrete sequential estimation
% 1977, Gerald J. Bierman
%
% L.G. van Willigenburg, W.L. De Koning, 2004, 
% "UDU factored discrete-time Lyapunov recursions
% solve optimal reduced-order LQG problems",
% European Journal of Control, 10, pp. 588-601
% http://www.sco.wur.nl/NR/rdonlyres/B575A290-A91F-4FB6-8A0C-AB7E4678BAC6/47048/EJC2005_1.pdf
%
% uduex     : examples and tests of all UD toolbox functions through
%             comparison of conventional with udu' factored computations
%
% ldlex     : examples and tests of all LD toolbox functions through
%             comparison of conventional with ldl' factored computations
%
% ktudu     : udu' factored Kalman filter time update
% ktldl     : ldl' factored Kalman filter time update
% kmudu     : udu' factored Kalman filter measurement update based on scalar updates
%             Produces Kalman gains for scalar updates but now also for vector updates
% kmldl     : ldl' factored Kalman filter measurement update based on scalar updates
%             Produces Kalman gains for scalar updates but now also for vector updates
% kmsudu    : scalar udu' factored measurement update kalman filter
% kmsldl    : scalar ldl' factored measurement update kalman filter
% sym2ud    : symmetric to udu' conversion
% sym2ld    : symmetric to ldl' conversion
% sym2udv   : vectorized udu' factorization
% ud2sym    : udu' to symmetric conversion
% ld2sym    : ldl' to symmetric conversion
% sym2ut    : symmetric to uu' conversion (Cholesky type factorization)
% sym2lt    : symmetric to ll' conversion (Cholesky type factorization)
% ut2sym    : uu' to symmetric conversion
% lt2sym    : ll' to symmetric conversion
% udinv     : inverse of u and d
% ldinv     : inverse of l and d
% utinv     : inverse of u
% ltinv     : inverse of l
% udt2sym   : p=u'*d*u, used to compute inverse
%             inv(p)=udt2sym(udinv(sym2ud(p)))
% ldt2sym   : p=l'*d*l, used to compute inverse
%             inv(p)=ldt2sym(ldinv(sym2ld(p)))
% utt2sym   : p=u'*u, used to compute inverse
%             inv(p)=utt2sym(utinv(sym2ut(p)))
% ltt2sym   : p=l'*l, used to compute inverse
%             inv(p)=ltt2sym(ltinv(sym2lt(p)))
% uduadd    : pn=c1*p1+c2*p2, c1,c2 scalars
% ldladd    : pn=c1*p1+c2*p2, c1,c2 scalars
% ud2ud     : ud to u,d conversion
% ld2ld     : ld to l,d conversion
% ud2ut     : ud to ut conversion
% ld2lt     : ld to lt conversion
% ut2ud     : ut to ud conversion
% lt2ld     : lt to ld conversion
%
% kmftu     : conventional Kalman filter time update
% kmfmu     : conventional Kalman filter measurement update
% psdr      : generation random symmetric positive or nonnegative matrix
%
% mexudu    : compile all .c mex files in current folder
%            (after setting the correct compiler using mex -setup)
help readme

Contact us