Changeset 477 for library/tests/test_kalman_QR.cpp
- Timestamp:
- 08/05/09 14:40:03 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/tests/test_kalman_QR.cpp
r461 r477 11 11 int main() { 12 12 // Klaman filter 13 mat A, B, C,D,R,Q,P0;13 mat A, B, C, D, R, Q, P0; 14 14 vec mu0; 15 15 mat Mu0;// read from matlab 16 16 // input from Matlab 17 it_file fin ( "testKF.it" );17 it_file fin ( "testKF.it" ); 18 18 19 mat Dt, XQRt, eR,eQ;19 mat Dt, XQRt, eR, eQ; 20 20 int Ndat; 21 21 22 bool xxx= fin.seek( "d" ); 23 if (!xxx){ it_error("testKF.it not found");} 24 fin >>Dt; 25 fin.seek( "A" ); 22 bool xxx = fin.seek ( "d" ); 23 if ( !xxx ) { 24 it_error ( "testKF.it not found" ); 25 } 26 fin >> Dt; 27 fin.seek ( "A" ); 26 28 fin >> A; 27 fin.seek ( "B" );29 fin.seek ( "B" ); 28 30 fin >> B; 29 fin.seek ( "C" );31 fin.seek ( "C" ); 30 32 fin >> C; 31 fin.seek ( "D" );33 fin.seek ( "D" ); 32 34 fin >> D; 33 fin.seek ( "R" );35 fin.seek ( "R" ); 34 36 fin >> R; 35 fin.seek( "Q" ); fin >> Q; 36 fin.seek( "P0" ); fin >> P0; 37 fin.seek( "mu0" ); fin >> Mu0; 38 mu0=Mu0.get_col(0); 39 37 fin.seek ( "Q" ); 38 fin >> Q; 39 fin.seek ( "P0" ); 40 fin >> P0; 41 fin.seek ( "mu0" ); 42 fin >> Mu0; 43 mu0 = Mu0.get_col ( 0 ); 44 40 45 Ndat = Dt.cols(); 41 XQRt =zeros( 5,Ndat );42 mat Xt =zeros( 2,Ndat );46 XQRt = zeros ( 5, Ndat ); 47 mat Xt = zeros ( 2, Ndat ); 43 48 44 49 // cout << KF; 45 RV rx ("{x }","2");46 RV ru ("{u }","1");47 RV ry ("{y }","1");48 RV rQR ("{Q,R }","3");50 RV rx ( "{x }", "2" ); 51 RV ru ( "{u }", "1" ); 52 RV ry ( "{y }", "1" ); 53 RV rQR ( "{Q,R }", "3" ); 49 54 // 50 55 KFcondQR KF; 51 56 // KF with R unknown 52 KF.set_parameters (A,B,C,D,ldmat(R),ldmat(Q));53 KF.set_est (mu0,ldmat(P0) );57 KF.set_parameters ( A, B, C, D, ldmat ( R ), ldmat ( Q ) ); 58 KF.set_est ( mu0, ldmat ( P0 ) ); 54 59 // 55 60 Kalman<ldmat> KFtr; 56 61 // KF with R unknown 57 KFtr.set_parameters (A,B,C,D,ldmat(R),ldmat(Q));58 KFtr.set_est (mu0,ldmat(P0) );59 62 KFtr.set_parameters ( A, B, C, D, ldmat ( R ), ldmat ( Q ) ); 63 KFtr.set_est ( mu0, ldmat ( P0 ) ); 64 60 65 mgamma evolQR; 61 evolQR.set_parameters (10.0,"1 1 1"); //sigma = 1/10 mu62 66 evolQR.set_parameters ( 10.0, "1 1 1" ); //sigma = 1/10 mu 67 63 68 MPF<KFcondQR> KF_QR; 64 KF_QR.set_parameters (&evolQR,&evolQR,100);65 evolQR.condition ("1 1 1");66 KF_QR.set_statistics (evolQR.e(), &KF);67 const epdf& mpost =KF_QR.posterior();68 const epdf& mposttr =KFtr.posterior();69 KF_QR.set_parameters ( &evolQR, &evolQR, 100 ); 70 evolQR.condition ( "1 1 1" ); 71 KF_QR.set_statistics ( evolQR.e(), &KF ); 72 const epdf& mpost = KF_QR.posterior(); 73 const epdf& mposttr = KFtr.posterior(); 69 74 70 XQRt.set_col ( 0,mpost.mean());71 Xt.set_col ( 0,mposttr.mean());72 for ( int t =1;t<Ndat;t++ ) {73 KF_QR.bayes ( Dt.get_col( t ));74 KFtr.bayes ( Dt.get_col( t ));75 76 XQRt.set_col (t,mpost.mean());77 Xt.set_col (t,mposttr.mean());75 XQRt.set_col ( 0, mpost.mean() ); 76 Xt.set_col ( 0, mposttr.mean() ); 77 for ( int t = 1; t < Ndat; t++ ) { 78 KF_QR.bayes ( Dt.get_col ( t ) ); 79 KFtr.bayes ( Dt.get_col ( t ) ); 80 81 XQRt.set_col ( t, mpost.mean() ); 82 Xt.set_col ( t, mposttr.mean() ); 78 83 } 79 80 it_file fou ( "testKF_QR_res.it" );81 fou << Name ("xqrth") << XQRt;82 fou << Name ("xth") << Xt;84 85 it_file fou ( "testKF_QR_res.it" ); 86 fou << Name ( "xqrth" ) << XQRt; 87 fou << Name ( "xth" ) << Xt; 83 88 //Exit program: 84 89 return 0;