Changeset 63 for tests/pmsm_sim2.cpp
- Timestamp:
- 04/09/08 15:29:53 (16 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
tests/pmsm_sim2.cpp
r62 r63 32 32 preA.set_submatrix ( dimy+dimx,dimy,Q._Ch() ); 33 33 }; 34 void bayes(const vec dt){ 35 EKFCh::bayes(dt); 36 37 vec xtrue(4); 38 //UGLY HACK!!! reliance on a predictor!! 39 xtrue(0)=x[0]; 40 xtrue(1)=x[1]; 41 xtrue(2)=x[2]; 42 xtrue(3)=x[3]; 43 44 ll = -0.5* ( 4 * 1.83787706640935 +_P->logdet() +xtrue* ( inv(_P->to_mat())*xtrue ) ); 45 } 46 }; 47 class EKF_unQful : public EKFfull , public BMcond { 48 public: 49 //! Default constructor 50 EKF_unQful ( RV rx, RV ry,RV ru,RV rQ ) :EKFfull ( rx,ry,ru ),BMcond ( rQ ) {}; 51 void condition ( const vec &Q0 ) { 52 Q=diag(Q0); 53 }; 54 void bayes(const vec dt){ 55 EKFfull::bayes(dt); 56 57 vec xtrue(4); 58 //UGLY HACK!!! reliance on a predictor!! 59 xtrue(0)=x[0]; 60 xtrue(1)=x[1]; 61 xtrue(2)=x[2]; 62 xtrue(3)=x[3]; 63 64 BM::ll = -0.5* ( 4 * 1.83787706640935 +log(det(P)) +xtrue* ( inv(P)*xtrue ) ); 65 } 34 66 }; 35 67 … … 82 114 if (t>8.5) x[8]=25.2; // 21A 83 115 84 // x[8]=0.0; 116 if (t>9) Ww=2.*M_PI*0; 117 x[8]=0.0; 85 118 } 86 119 … … 90 123 double h = 1e-6; 91 124 int Nsimstep = 125; 92 int Npart = 100;125 int Npart = 50; 93 126 94 127 //StrSim:06: … … 104 137 vec mu0= "0.0 0.0 0.0 0.0"; 105 138 // vec Qdiag ( "0.01 0.01 0.01 0.0001" ); //zdenek: 0.01 0.01 0.0001 0.0001 106 vec Qdiag ( "1 8 18 157.9 0.0001" ); //zdenek: 0.01 0.01 0.0001 0.0001107 vec Rdiag ( " 90 90" ); //var(diff(xth)) = "0.034 0.034"139 vec Qdiag ( "10 10 10 0.001" ); //zdenek: 0.01 0.01 0.0001 0.0001 140 vec Rdiag ( "100 100" ); //var(diff(xth)) = "0.034 0.034" 108 141 chmat Q ( Qdiag ); 109 142 chmat R ( Rdiag ); 110 143 EKFCh KFE ( rx,ry,ru ); 111 KFE.set_est ( mu0, ( 1*eye ( 4 ) ) );112 KFE.set_parameters ( &fxu,&hxu,Q diag,Rdiag);144 KFE.set_est ( mu0, chmat( 1*eye ( 4 ) ) ); 145 KFE.set_parameters ( &fxu,&hxu,Q,R); 113 146 114 147 RV rQ ( "100","{Q}","4","0" ); 115 EKF_unQ KFEp ( rx,ry,ru,rQ );116 KFEp.set_est ( mu0, chmat ( 1*ones ( 4 )) );117 KFEp.set_parameters ( &fxu,&hxu, Q,R);148 EKF_unQful KFEp ( rx,ry,ru,rQ ); 149 KFEp.set_est ( mu0, 1*ones ( 4 ) ); 150 KFEp.set_parameters ( &fxu,&hxu,diag(Qdiag),diag(Rdiag) ); 118 151 119 152 mgamma_fix evolQ ( rQ,rQ ); 120 MPF<EKF_unQ > M ( rx,rQ,evolQ,evolQ,Npart,KFEp );153 MPF<EKF_unQful> M ( rx,rQ,evolQ,evolQ,Npart,KFEp ); 121 154 // initialize 122 155 evolQ.set_parameters ( 1000.0 ,Qdiag, 0.5); //sigma = 1/10 mu … … 124 157 epdf& pfinit=evolQ._epdf(); 125 158 M.set_est ( pfinit ); 126 evolQ.set_parameters ( 5000.0, Qdiag, 0.9999 );159 evolQ.set_parameters ( 100000.0, Qdiag, 0.9999 ); 127 160 128 161 // … … 166 199 } 167 200 168 it_file fou ( "pmsm_sim.it" );201 /* it_file fou ( "pmsm_sim.it" ); 169 202 170 203 fou << Name ( "xth" ) << Xt; … … 172 205 fou << Name ( "xthE" ) << XtE; 173 206 fou << Name ( "xthM" ) << XtM; 174 fou << Name ( "SSAT" ) << SSAT; 207 fou << Name ( "SSAT" ) << SSAT;*/ 175 208 //Exit program: 176 209