75a371ae79b352547ccd91c5544fdc3ca2d229a3
[scilab.git] / scilab / modules / signal_processing / macros / sskf.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // 
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at    
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10 function [xe]=sskf(y,f,h,q,r,x0)
11 //<xe>=sskf(y,f,h,q,r,x0)
12 //steady-state kalman filter
13 // y   :data in form [y0,y1,...,yn], yk a column vector
14 // f   :system matrix dim(NxN)
15 // h   :observations matrix dim(NxM)
16 // q   :dynamics noise matrix dim(NxN)
17 // r   :observations noise matrix dim(MxM)
18 //
19 // xe  :estimated state
20 //!
21
22 //get steady-state Kalman gain
23  
24 x=ricc(f',h'/r*h,q,'disc') // steady state err cov
25  k=x*h'/(h*x*h'+r)
26
27  // estimate state
28  kfd=(eye(f)-k*h)*f;
29  [xe]=ltitr(kfd,k,y,x0);
30 endfunction