/*! \file \brief Disturbances of PMSM model are fitted by an ARX model \author Vaclav Smidl. \ingroup PMSM ----------------------------------- BDM++ - C++ library for Bayesian Decision Making under Uncertainty Using IT++ for numerical operations ----------------------------------- */ #include #include using namespace bdm; vec getPsi_a ( int t, mat &D, mat &Du , mat &X ); vec getPsi_b ( int t, mat &D, mat &Du , mat &X ); int main() { // Kalman filter int Ndat = 90000; mat D; mat Du; mat X; dirfilelog L ( "exp/sim_var_arx",1000 ); it_file itf ( "sim_var.it" ); itf >> Name ( "D" ) >> D; itf >> Name ( "Du" ) >> Du; itf >> Name ( "X" ) >> X; Array Names = "{ia ib om dom r }"; int rglen = Names.length(); //Regressor RV rgr ( Names ); mat V0 = 0.0001*eye ( rglen ); V0 ( 0,0 ) =200; double nu0 = rglen+1; //Autoregressive model ARX Ar_a ( rgr,V0,nu0 ,0.95 ); ARX Ar_b ( rgr,V0,nu0 ,0.95 ); const epdf& pA= Ar_a.posterior(); const epdf& pB= Ar_b.posterior(); RV rta ( "{th_a }",vec_1 ( rglen ) ); RV rtb ( "{th_b }",vec_1 ( rglen ) ); int tha_log = L.add ( rta,"" ); int thb_log = L.add ( rtb,"" ); L.init(); vec Psi ( rglen ); vec Save ( 13 ); for ( int t=2; t