Changeset 63 for tests/pmsm_sim3.cpp
- Timestamp:
- 04/09/08 15:29:53 (16 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
tests/pmsm_sim3.cpp
r62 r63 27 27 void set_simulator_t(double &Ww) { 28 28 29 if (t>0. 2) x[8]=1.2; // 1A //0.2ZP29 if (t>0.0002) x[8]=1.2; // 1A //0.2ZP 30 30 if (t>0.4) x[8]=10.8; // 9A 31 31 if (t>0.6) x[8]=25.2; // 21A … … 73 73 if (t>8.5) x[8]=25.2; // 21A 74 74 75 //x[8]=0.0;75 x[8]=0.0; 76 76 } 77 77 … … 81 81 double h = 1e-6; 82 82 int Nsimstep = 125; 83 int Npart = 500;83 int Npart = 100; 84 84 85 85 86 86 vec mu0= "0.0 0.0 0.0 0.0"; 87 vec Qdiag ( "0.0 1 0.01 0.0001 0.0001" ); //zdenek: 0.01 0.01 0.0001 0.000187 vec Qdiag ( "0.05 0.05 0.002 0.001" ); //zdenek: 0.01 0.01 0.0001 0.0001 88 88 vec Rdiag ( "0.05 0.05" ); //var(diff(xth)) = "0.034 0.034" 89 89 chmat Q ( Qdiag ); … … 99 99 MPF<EKFfixed> M ( rx,rQ,evolQ,evolQ,Npart,KFE ); 100 100 // initialize 101 evolQ.set_parameters ( 10 00.0 ,Qdiag, 0.5); //sigma = 1/10 mu101 evolQ.set_parameters ( 10.0 ,Qdiag, 1.0); //sigma = 1/10 mu 102 102 evolQ.condition ( Qdiag ); //Zdenek default 103 103 epdf& pfinit=evolQ._epdf(); 104 104 M.set_est ( pfinit ); 105 evolQ.set_parameters ( 100000.0, Qdiag, 0.99999 );105 evolQ.set_parameters ( 500000.0, Qdiag, 0.9999 ); 106 106 107 107 … … 111 111 112 112 mat Xt=zeros ( Ndat ,9 ); //true state from simulator 113 mat Dt=zeros ( Ndat,4 +2); //observation113 mat Dt=zeros ( Ndat,4 ); //observation 114 114 mat XtE=zeros ( Ndat, 4 ); 115 115 mat XtM=zeros ( Ndat,4+4 ); //Q + x … … 118 118 pmsmsim_set_parameters ( 0.28,0.003465,0.1989,0.0,4,1.5,0.04, 200., 3e-6, h ); 119 119 double Ww=0.0; 120 static int k_rampa=1; 121 static long k_rampa_tmp=0; 122 120 123 vec dt ( 2 ); 121 124 vec ut ( 2 ); … … 125 128 for ( int ii=0; ii<Nsimstep;ii++ ) { 126 129 //simulator 127 set_simulator_t(Ww); 130 Ww+=k_rampa*2.*M_PI*2e-4; //1000Hz/s 131 if ( Ww>2.*M_PI*150. ) { 132 Ww=2.*M_PI*150.; 133 if ( k_rampa_tmp<500000 ) k_rampa_tmp++; 134 else {k_rampa=-1;k_rampa_tmp=0;} 135 }; 136 if ( Ww<-2.*M_PI*150. ) Ww=-2.*M_PI*150.; /* */ 137 // set_simulator_t(Ww); 128 138 pmsmsim_step ( Ww ); 129 139 }; … … 138 148 139 149 Xt.set_row ( tK,vec ( x,9 ) ); //vec from C-array 140 Dt.set_row ( tK, concat ( dt,ut ,vec_1(sqrt(pow(ut(0),2)+pow(ut(1),2))), vec_1(sqrt(pow(dt(0),2)+pow(dt(1),2))) ));150 Dt.set_row ( tK, concat ( dt,ut)); 141 151 XtE.set_row ( tK,KFEep.mean() ); 152 double qNaN = std::numeric_limits<double>::quiet_NaN(); 142 153 XtM.set_row ( tK,Mep.mean() ); 143 154 }