Changeset 63 for tests/pmsm_sim2.cpp

Show
Ignore:
Timestamp:
04/09/08 15:29:53 (16 years ago)
Author:
smidl
Message:

odstraneni net a drobne upravy

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • tests/pmsm_sim2.cpp

    r62 r63  
    3232                preA.set_submatrix ( dimy+dimx,dimy,Q._Ch() ); 
    3333        }; 
     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}; 
     47class EKF_unQful : public EKFfull , public BMcond { 
     48public: 
     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        } 
    3466}; 
    3567 
     
    82114        if (t>8.5) x[8]=25.2;  // 21A 
    83115         
    84 //        x[8]=0.0; 
     116        if (t>9) Ww=2.*M_PI*0; 
     117        x[8]=0.0; 
    85118} 
    86119 
     
    90123        double h = 1e-6; 
    91124        int Nsimstep = 125; 
    92         int Npart = 100; 
     125        int Npart = 50; 
    93126         
    94127        //StrSim:06: 
     
    104137        vec mu0= "0.0 0.0 0.0 0.0"; 
    105138//      vec Qdiag ( "0.01 0.01 0.01 0.0001" ); //zdenek: 0.01 0.01 0.0001 0.0001 
    106         vec Qdiag ( "18 18 157.9 0.0001" ); //zdenek: 0.01 0.01 0.0001 0.0001 
    107         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" 
    108141        chmat Q ( Qdiag ); 
    109142        chmat R ( Rdiag ); 
    110143        EKFCh KFE ( rx,ry,ru ); 
    111         KFE.set_est ( mu0, ( 1*eye ( 4 ) ) ); 
    112         KFE.set_parameters ( &fxu,&hxu,Qdiag,Rdiag); 
     144        KFE.set_est ( mu0, chmat( 1*eye ( 4 ) ) ); 
     145        KFE.set_parameters ( &fxu,&hxu,Q,R); 
    113146 
    114147        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) ); 
    118151 
    119152        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 ); 
    121154        // initialize 
    122155        evolQ.set_parameters ( 1000.0 ,Qdiag, 0.5); //sigma = 1/10 mu 
     
    124157        epdf& pfinit=evolQ._epdf(); 
    125158        M.set_est ( pfinit ); 
    126         evolQ.set_parameters ( 5000.0, Qdiag, 0.9999 ); 
     159        evolQ.set_parameters ( 100000.0, Qdiag, 0.9999 ); 
    127160 
    128161        // 
     
    166199        } 
    167200 
    168         it_file fou ( "pmsm_sim.it" ); 
     201/*      it_file fou ( "pmsm_sim.it" ); 
    169202 
    170203        fou << Name ( "xth" ) << Xt; 
     
    172205        fou << Name ( "xthE" ) << XtE; 
    173206        fou << Name ( "xthM" ) << XtM; 
    174         fou << Name ( "SSAT" ) << SSAT; 
     207        fou << Name ( "SSAT" ) << SSAT;*/ 
    175208        //Exit program: 
    176209