Changeset 37 for tests/pmsm_unkQ.cpp

Show
Ignore:
Timestamp:
03/14/08 18:11:21 (16 years ago)
Author:
smidl
Message:

Matrix in Cholesky decomposition, Square-root Kalman and many bug fixes

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • tests/pmsm_unkQ.cpp

    r33 r37  
    2121/* 
    2222// PMSM with Q on Ia and Ib given externally 
    23 class EKF_unQ : public EKF<ldmat> , public BMcond { 
     23class EKF_unQ : public EKF<chmat> , public BMcond { 
    2424public: 
    25         EKF_unQ( rx,ry,ru,rQ):EKF<ldmat>(rx,ry,ru),BMcond(rQ){}; 
     25        EKF_unQ( rx,ry,ru,rQ):EKF<chmat>(rx,ry,ru),BMcond(rQ){}; 
    2626        void condition(const vec &Q0){}; 
    2727};*/ 
    2828 
     29 
    2930int main() { 
    3031        // Kalman filter 
    31         int Ndat = 10000; 
     32        int Ndat = 1000; 
    3233 
    3334//      cout << KF; 
     
    4041 
    4142        vec mu0= "100 100 100 1"; 
    42         vec Qdiag ( "0.1 0.1 0.01 0.00001" ); 
     43        vec Qdiag ( "0.1 0.1 0.01 0.01" ); 
    4344        vec Rdiag ( "0.02 0.02" ); 
    4445        vec vQ = "0.01:0.01:100"; 
    45         ldmat Q = ldmat ( Qdiag ); 
    46         ldmat R = ldmat ( Rdiag ); 
    47         EKF<ldmat> KFE ( rx,ry,ru ); 
     46        chmat Q ( Qdiag ); 
     47        chmat R ( Rdiag ); 
     48        EKFCh KFE ( rx,ry,ru ); 
     49        KFE.set_est ( mu0, chmat ( 1000*ones ( 4 ) ) ); 
    4850        KFE.set_parameters ( &fxu,&hxu,Q,R ); 
    49         KFE.set_est ( mu0, ldmat ( 1000*ones ( 4 ) ) ); 
    5051 
    5152        mat ll(100,Ndat); 
    5253 
    53         EKF<ldmat>* kfArray[100]; 
     54        EKFCh* kfArray[100]; 
    5455 
    5556        for ( int i=0;i<100;i++ ) { 
    5657                vec Qid ( Qdiag ); 
    5758                Qid ( 0 ) = vQ ( i ); Qid ( 1 ) = vQ ( i ); 
    58                 kfArray[i]= new EKF<ldmat> ( rx,ry,ru ); 
    59                 kfArray[i]->set_parameters ( &fxu,&hxu,ldmat ( Qid ),R ); 
    60                 kfArray[i]->set_est ( mu0, ldmat ( 1000*ones ( 4 ) ) ); 
     59                kfArray[i]= new EKFCh ( rx,ry,ru ); 
     60                kfArray[i]->set_est ( mu0, chmat ( 1000*ones ( 4 ) ) ); 
     61                kfArray[i]->set_parameters ( &fxu,&hxu,chmat ( Qid ),R ); 
    6162        } 
    6263 
     
    8990                //estimator 
    9091                KFE.bayes ( concat ( dt,ut ) ); 
    91                 for ( int i=0;i<100;i++ ) {kfArray[i]->bayes( concat ( dt,ut ) );ll(i,t)+=kfArray[i]->_ll();} 
     92                for ( int i=0;i<100;i++ ) {kfArray[i]->bayes( concat ( dt,ut ) );ll(i,t)=ll(i,t-1) + kfArray[i]->_ll(); 
     93                } 
    9294                 
    9395                Xt.set_col ( t,xt );