Changeset 283

Show
Ignore:
Timestamp:
02/24/09 14:14:01 (16 years ago)
Author:
smidl
Message:

get rid of BMcond + adaptation in doprava/

Files:
23 modified

Legend:

Unmodified
Added
Removed
  • CMakeLists.txt

    r280 r283  
    7878#add_subdirectory (mpdm) 
    7979add_subdirectory (library) 
    80 #add_subdirectory (doprava) 
     80add_subdirectory (doprava) 
  • bdm/estim/arx.cpp

    r270 r283  
    4444} 
    4545 
    46 ARX* ARX::_copy_ ( ) { 
     46ARX* ARX::_copy_ ( ) const { 
    4747        ARX* Tmp=new ARX ( *this ); 
    4848        return Tmp; 
  • bdm/estim/arx.h

    r271 r283  
    5555        ARX ( const double frg0=1.0 ) : BMEF ( frg0 ),est (), V ( est._V() ), nu ( est._nu() ) {}; 
    5656        ARX ( const ARX &A0 ) : BMEF (),est ( A0.est ), V ( est._V() ), nu ( est._nu() ) {}; 
    57         ARX* _copy_(); 
     57        ARX* _copy_() const; 
    5858        void set_parameters ( double frg0 ) {frg=frg0;} 
    5959        void set_statistics ( int dimx0, const ldmat V0, double nu0=-1.0 ) {est.set_parameters ( dimx0,V0,nu0 );last_lognc=est.lognc();dimx=dimx0;} 
  • bdm/estim/ekf_templ.h

    r279 r283  
    1919 
    2020//!Extended Kalman filter with unknown \c Q and \c R 
    21 class EKFful_unQR : public EKFfull , public BMcond { 
     21class EKFful_unQR : public EKFfull { 
    2222public: 
    23         //! Default constructor 
    24         EKFful_unQR ( ) :EKFfull ( ),BMcond ( ) {}; 
    2523        void condition ( const vec &QR0 ) { 
    2624                Q=diag(QR0(0,dimx-1)); 
     
    3028 
    3129//!Extended Kalman filter in Choleski form with unknown \c Q 
    32 class EKFCh_unQ : public EKFCh , public BMcond { 
     30class EKFCh_unQ : public EKFCh { 
    3331public: 
    34         //! Default constructor 
    35         EKFCh_unQ (  ) :EKFCh ( ),BMcond ( ) {}; 
    3632        void condition ( const vec &Q0 ) { 
    3733                Q.setD ( Q0,0 ); 
     
    4238 
    4339//!Extended Kalman filter with unknown parameters in \c IM 
    44 class EKFCh_cond : public EKFCh , public BMcond { 
     40class EKFCh_cond : public EKFCh { 
    4541        public: 
    46         //! Default constructor 
    47                 EKFCh_cond ( ) :EKFCh ( ),BMcond ( ) {}; 
    4842                void condition ( const vec &val ) { 
    4943                        pfxu->condition ( val ); 
  • bdm/estim/libKF.cpp

    r279 r283  
    6969 
    7070        dimx = pfxu0->_dimx(); 
    71         dimy = phxu0->_dimy(); 
     71        dimy = phxu0->dimension(); 
    7272        dimu = pfxu0->_dimu(); 
    7373 
     
    169169        phxu = phxu0; 
    170170 
    171         dimx = pfxu0->_dimy(); 
    172         dimy = phxu0->_dimy(); 
     171        dimx = pfxu0->dimension(); 
     172        dimy = phxu0->dimension(); 
    173173        dimu = pfxu0->_dimu(); 
    174174        // set size of mu - just for constant terms of A and C  
     
    249249} 
    250250 
    251 void KFcondQR::condition ( const vec &QR ) { 
    252         it_assert_debug ( QR.length() == ( dimx+dimy ),"KFcondRQ: conditioning by incompatible vector" ); 
    253  
    254         Q.setD ( QR ( 0, dimx-1 ) ); 
    255         R.setD ( QR ( dimx, -1 ) ); 
    256 }; 
    257  
    258 void KFcondR::condition ( const vec &R0 ) { 
    259         it_assert_debug ( R0.length() == ( dimy ),"KFcondR: conditioning by incompatible vector" ); 
    260  
    261         R.setD ( R0 ); 
    262 }; 
    263  
    264  
    265 } 
     251} 
  • bdm/estim/libKF.h

    r279 r283  
    1919#include "../math/chmat.h" 
    2020 
    21 namespace bdm{ 
     21namespace bdm { 
    2222 
    2323/*! 
     
    4949        friend std::ostream &operator<< ( std::ostream &os, const KalmanFull &kf ); 
    5050        //! For EKFfull; 
    51         KalmanFull(){}; 
     51        KalmanFull() {}; 
    5252}; 
    5353 
     
    5656* \brief Kalman filter with covariance matrices in square root form. 
    5757 
    58 Parameter evolution model:\f[ x_t = A x_{t-1} + B u_t + Q^{1/2} e_t \f]  
     58Parameter evolution model:\f[ x_t = A x_{t-1} + B u_t + Q^{1/2} e_t \f] 
    5959Observation model: \f[ y_t = C x_{t-1} + C u_t + Q^{1/2} w_t. \f] 
    60 Where $e_t$ and $w_t$ are independent vectors Normal(0,1)-distributed disturbances.  
     60Where $e_t$ and $w_t$ are independent vectors Normal(0,1)-distributed disturbances. 
    6161*/ 
    6262template<class sq_T> 
     
    7777        mat A; 
    7878        //! Matrix B 
    79         mat B;  
     79        mat B; 
    8080        //! Matrix C 
    8181        mat C; 
     
    112112        //! Set estimate values, used e.g. in initialization. 
    113113        void set_est ( const vec &mu0, const sq_T &P0 ) { 
    114                 sq_T pom(dimy); 
     114                sq_T pom ( dimy ); 
    115115                est.set_parameters ( mu0,P0 ); 
    116                 P0.mult_sym(C,pom); 
     116                P0.mult_sym ( C,pom ); 
    117117                fy.set_parameters ( C*mu0, pom ); 
    118118        }; 
     
    133133Trivial example: 
    134134\include kalman_simple.cpp 
    135   
    136 */ 
    137 class KalmanCh : public Kalman<chmat>{ 
     135 
     136*/ 
     137class KalmanCh : public Kalman<chmat> { 
    138138protected: 
    139139//! pre array (triangular matrix) 
    140 mat preA; 
     140        mat preA; 
    141141//! post array (triangular matrix) 
    142 mat postA; 
    143  
    144 public: 
    145         //! Default constructor 
    146         KalmanCh ():Kalman<chmat>(),preA(),postA(){}; 
     142        mat postA; 
     143 
     144public: 
     145        //! copy constructor 
     146        BM* _copy_() const { 
     147                KalmanCh* K=new KalmanCh; 
     148                K->set_parameters ( A,B,C,D,Q,R ); 
     149                K->set_statistics ( _mu,_P ); 
     150                return K; 
     151        } 
    147152        //! Set parameters with check of relevance 
    148153        void set_parameters ( const mat &A0,const mat &B0,const mat &C0,const mat &D0,const chmat &Q0,const chmat &R0 ); 
     
    150155                est.set_parameters ( mu0,P0 ); 
    151156        }; 
    152          
    153          
     157 
     158 
    154159        /*!\brief  Here dt = [yt;ut] of appropriate dimensions 
    155          
     160 
    156161        The following equality hold::\f[ 
    157 \left[\begin{array}{cc} 
    158 R^{0.5}\\ 
    159 P_{t|t-1}^{0.5}C' & P_{t|t-1}^{0.5}CA'\\ 
    160  & Q^{0.5}\end{array}\right]<\mathrm{orth.oper.}>=\left[\begin{array}{cc} 
    161 R_{y}^{0.5} & KA'\\ 
    162  & P_{t+1|t}^{0.5}\\ 
    163 \\\end{array}\right]\f] 
    164  
    165 Thus this object evaluates only predictors! Not filtering densities. 
     162        \left[\begin{array}{cc} 
     163        R^{0.5}\\ 
     164        P_{t|t-1}^{0.5}C' & P_{t|t-1}^{0.5}CA'\\ 
     165        & Q^{0.5}\end{array}\right]<\mathrm{orth.oper.}>=\left[\begin{array}{cc} 
     166        R_{y}^{0.5} & KA'\\ 
     167        & P_{t+1|t}^{0.5}\\ 
     168        \\\end{array}\right]\f] 
     169 
     170        Thus this object evaluates only predictors! Not filtering densities. 
    166171        */ 
    167172        void bayes ( const vec &dt ); 
     
    179184        //! Observation Model h(x,u) 
    180185        diffbifn* phxu; 
    181          
    182         enorm<fsqmat> E;  
     186 
     187        enorm<fsqmat> E; 
    183188public: 
    184189        //! Default constructor 
     
    189194        void bayes ( const vec &dt ); 
    190195        //! set estimates 
    191         void set_est (vec mu0, mat P0){mu=mu0;P=P0;}; 
     196        void set_est ( vec mu0, mat P0 ) {mu=mu0;P=P0;}; 
    192197        //!dummy! 
    193         const epdf& posterior()const{return E;}; 
    194         const enorm<fsqmat>* _e()const{return &E;}; 
    195         const mat _R(){return P;} 
     198        const epdf& posterior() const{return E;}; 
     199        const enorm<fsqmat>* _e() const{return &E;}; 
     200        const mat _R() {return P;} 
    196201}; 
    197202 
     
    210215        //! Default constructor 
    211216        EKF ( RV rvx, RV rvy, RV rvu ); 
     217        //! copy constructor 
     218        EKF<sq_T>* _copy_() const { return new EKF<sq_T>(this); } 
    212219        //! Set nonlinear functions for mean values and covariance matrices. 
    213220        void set_parameters ( diffbifn* pfxu, diffbifn* phxu, const sq_T Q0, const sq_T R0 ); 
     
    223230 
    224231class EKFCh : public KalmanCh { 
    225         protected: 
     232protected: 
    226233        //! Internal Model f(x,u) 
    227234        diffbifn* pfxu; 
     
    229236        diffbifn* phxu; 
    230237public: 
     238        //! copy constructor duplicated - calls different set_parameters 
     239        BM* _copy_() const { 
     240                EKFCh* E=new EKFCh; 
     241                E->set_parameters ( pfxu,phxu,Q,R ); 
     242                E->set_statistics ( _mu,_P ); 
     243                return E; 
     244        } 
    231245        //! Set nonlinear functions for mean values and covariance matrices. 
    232246        void set_parameters ( diffbifn* pfxu, diffbifn* phxu, const chmat Q0, const chmat R0 ); 
     
    239253*/ 
    240254 
    241 class KFcondQR : public Kalman<ldmat>, public BMcond { 
     255class KFcondQR : public Kalman<ldmat> { 
    242256//protected: 
    243257public: 
     258        void condition ( const vec &QR ) { 
     259                it_assert_debug ( QR.length() == ( dimx+dimy ),"KFcondRQ: conditioning by incompatible vector" ); 
     260 
     261                Q.setD ( QR ( 0, dimx-1 ) ); 
     262                R.setD ( QR ( dimx, -1 ) ); 
     263        }; 
     264}; 
     265 
     266/*! 
     267\brief Kalman Filter with conditional diagonal matrices R and Q. 
     268*/ 
     269 
     270class KFcondR : public Kalman<ldmat> { 
     271//protected: 
     272public: 
    244273        //!Default constructor 
    245         KFcondQR ( ) : Kalman<ldmat> ( ),BMcond ( ) {}; 
    246  
    247         void condition ( const vec &RQ ); 
    248 }; 
    249  
    250 /*! 
    251 \brief Kalman Filter with conditional diagonal matrices R and Q. 
    252 */ 
    253  
    254 class KFcondR : public Kalman<ldmat>, public BMcond { 
    255 //protected: 
    256 public: 
    257         //!Default constructor 
    258         KFcondR ( ) : Kalman<ldmat> ( ),BMcond ( ) {}; 
    259  
    260         void condition ( const vec &R ); 
     274        KFcondR ( ) : Kalman<ldmat> ( ) {}; 
     275 
     276        void condition ( const vec &R0 ) { 
     277                it_assert_debug ( R0.length() == ( dimy ),"KFcondR: conditioning by incompatible vector" ); 
     278 
     279                R.setD ( R0 ); 
     280        }; 
     281 
    261282}; 
    262283 
     
    267288                dimx ( K0.dimx ), dimy ( K0.dimy ),dimu ( K0.dimu ), 
    268289                A ( K0.A ), B ( K0.B ), C ( K0.C ), D ( K0.D ), 
    269                 Q(K0.Q), R(K0.R), 
    270                 est ( K0.est ), fy ( K0.fy ), _yp(fy._mu()),_Ry(fy._R()), _mu(est._mu()), _P(est._R()) { 
     290                Q ( K0.Q ), R ( K0.R ), 
     291                est ( K0.est ), fy ( K0.fy ), _yp ( fy._mu() ),_Ry ( fy._R() ), _mu ( est._mu() ), _P ( est._R() ) { 
    271292 
    272293// copy values in pointers 
     
    279300 
    280301template<class sq_T> 
    281 Kalman<sq_T>::Kalman ( ) : BM (), est ( ), fy (),  _yp(fy._mu()), _Ry(fy._R()), _mu(est._mu()), _P(est._R()) { 
     302Kalman<sq_T>::Kalman ( ) : BM (), est ( ), fy (),  _yp ( fy._mu() ), _Ry ( fy._R() ), _mu ( est._mu() ), _P ( est._R() ) { 
    282303}; 
    283304 
     
    287308        dimy = C0.rows(); 
    288309        dimu = B0.cols(); 
    289          
     310 
    290311        it_assert_debug ( A0.cols() ==dimx, "Kalman: A is not square" ); 
    291312        it_assert_debug ( B0.rows() ==dimx, "Kalman: B is not compatible" ); 
     
    307328        it_assert_debug ( dt.length() == ( dimy+dimu ),"KalmanFull::bayes wrong size of dt" ); 
    308329 
    309         sq_T iRy(dimy); 
     330        sq_T iRy ( dimy ); 
    310331        vec u = dt.get ( dimy,dimy+dimu-1 ); 
    311332        vec y = dt.get ( 0,dimy-1 ); 
     
    328349        sq_T pom ( ( int ) Pfull.rows() ); 
    329350        iRy.mult_sym_t ( C*Pfull,pom ); 
    330         (_P ) -= pom; // P = P -PC'iRy*CP; 
    331         (_yp ) = C* _mu  +D*u; //y prediction 
    332         (_mu ) += _K* ( y- _yp ); 
     351        ( _P ) -= pom; // P = P -PC'iRy*CP; 
     352        ( _yp ) = C* _mu  +D*u; //y prediction 
     353        ( _mu ) += _K* ( y- _yp ); 
    333354 
    334355 
     
    340361 
    341362}; 
    342   
     363 
    343364 
    344365 
     
    369390        it_assert_debug ( dt.length() == ( dimy+dimu ),"KalmanFull::bayes wrong size of dt" ); 
    370391 
    371         sq_T iRy(dimy,dimy); 
     392        sq_T iRy ( dimy,dimy ); 
    372393        vec u = dt.get ( dimy,dimy+dimu-1 ); 
    373394        vec y = dt.get ( 0,dimy-1 ); 
     
    393414        sq_T pom ( ( int ) Pfull.rows() ); 
    394415        iRy.mult_sym_t ( C*Pfull,pom ); 
    395         (_P ) -= pom; // P = P -PC'iRy*CP; 
     416        ( _P ) -= pom; // P = P -PC'iRy*CP; 
    396417        _yp = phxu->eval ( _mu,u ); //y prediction 
    397418        ( _mu ) += _K* ( y-_yp ); 
  • bdm/estim/libPF.cpp

    r278 r283  
    11#include "libPF.h" 
    22 
    3 namespace bdm{ 
     3namespace bdm { 
    44 
    55using std::endl; 
     
    1313        for ( i=0;i<n;i++ ) { 
    1414                //generate new samples from paramater evolution model; 
    15                 _samples ( i ) = par->samplecond ( _samples ( i )); 
    16                 lls(i )= par->_e()->evallog(_samples(i)); 
     15                _samples ( i ) = par->samplecond ( _samples ( i ) ); 
     16                lls ( i ) = par->_e()->evallog ( _samples ( i ) ); 
    1717                lls ( i ) *= obs->evallogcond ( dt,_samples ( i ) ); 
    1818 
     
    3030        _w ( i ) /=sum; //? 
    3131 
    32         ind = est.resample(); 
     32        ind = est.resample(resmethod); 
    3333 
    3434} 
    3535 
    36 void PF::set_est ( const epdf &epdf0 ) { 
    37         int i; 
     36// void PF::set_est ( const epdf &epdf0 ) { 
     37//      int i; 
     38//  
     39//      for ( i=0;i<n;i++ ) { 
     40//              _samples ( i ) = epdf0.sample(); 
     41//      } 
     42// } 
    3843 
    39         for ( i=0;i<n;i++ ) { 
    40                 _samples ( i ) = epdf0.sample(); 
    41         } 
    42 } 
    4344 
    4445} 
  • bdm/estim/libPF.h

    r281 r283  
    4040        mpdf *obs; 
    4141 
     42        //! which resampling method will be used 
     43        RESAMPLING_METHOD resmethod; 
     44 
    4245        //! \name Options 
    4346        //!@{ 
    4447 
    45         //! Log resampling times 
    46         bool opt_L_res; 
    4748        //! Log all samples 
    4849        bool opt_L_smp; 
     50        //! Log all samples 
     51        bool opt_L_wei; 
    4952        //!@} 
    5053 
     
    5255        //! \name Constructors 
    5356        //!@{ 
    54         PF ( ) :est(), _w ( est._w() ),_samples ( est._samples() ) {}; 
    55         PF ( mpdf *par0, mpdf *obs0, epdf *epdf0, int n0 ) : 
    56                         est ( ),_w ( est._w() ),_samples ( est._samples() ) 
    57         { set_parameters ( par0,obs0,n0 ); set_statistics ( ones ( n0 ),epdf0 ); }; 
    58         void set_parameters ( mpdf *par0, mpdf *obs0, int n0 ) 
    59         { par = par0; obs=obs0; n=n0; est.set_n ( n );}; 
    60         void set_statistics ( const vec w0, epdf *epdf0 ) {est.set_parameters ( w0,epdf0 );}; 
     57        PF ( ) :est(), _w ( est._w() ),_samples ( est._samples() ), opt_L_smp ( false ), opt_L_wei ( false ) {LIDs.set_size ( 5 );}; 
     58        /*      PF ( mpdf *par0, mpdf *obs0, epdf *epdf0, int n0 ) : 
     59                                est ( ),_w ( est._w() ),_samples ( est._samples() ),opt_L_smp(false), opt_L_wei(false) 
     60                { set_parameters ( par0,obs0,n0 ); set_statistics ( ones ( n0 ),epdf0 ); };*/ 
     61        void set_parameters ( mpdf *par0, mpdf *obs0, int n0, RESAMPLING_METHOD rm=SYSTEMATIC ) 
     62        { par = par0; obs=obs0; n=n0; resmethod= rm;}; 
     63        void set_statistics ( const vec w0, epdf *epdf0 ) {est.set_statistics ( w0,epdf0 );}; 
    6164        //!@} 
    6265        //! Set posterior density by sampling from epdf0 
    63         void set_est ( const epdf &epdf0 ); 
    64         void set_options(const string &opt){ 
    65                 opt_L_res= ( s.find ( "logres" ) !=string::npos ); 
    66                 opt_L_smp= ( s.find ( "logsmp" ) !=string::npos );               
     66//      void set_est ( const epdf &epdf0 ); 
     67        void set_options ( const string &opt ) { 
     68                BM::set_options(opt); 
     69                opt_L_wei= ( opt.find ( "logweights" ) !=string::npos ); 
     70                opt_L_smp= ( opt.find ( "logsamples" ) !=string::npos ); 
    6771        } 
    6872        void bayes ( const vec &dt ); 
     
    7882 
    7983template<class BM_T> 
    80  
    8184class MPF : public PF { 
    82         BM_T* Bms[10000]; 
     85        Array<BM_T*> BMs; 
    8386 
    8487        //! internal class for MPDF providing composition of eEmp with external components 
     
    9497                                Coms ( _w.length() ) { 
    9598                }; 
     99                //! read statistics from MPF 
     100                void read_statistics ( Array<BM_T*> &A ) { 
     101                        dim = E.dimension() +A ( 0 )->posterior().dimension(); 
     102                        for ( int i=0; i<_w.length() ;i++ ) {Coms ( i ) = A ( i )->_e();} 
     103                } 
     104                //! needed in resampling 
    96105                void set_elements ( int &i, double wi, const epdf* ep ) 
    97106                {_w ( i ) =wi; Coms ( i ) =ep;}; 
    98107 
    99                 void set_n ( int n ) {E.set_n ( n ); Coms.set_length ( n );} 
     108                void set_parameters ( int n ) { 
     109                        E.set_parameters ( n, false ); 
     110                        Coms.set_length ( n ); 
     111                } 
    100112                vec mean() const { 
    101113                        // ugly 
     
    114126                        return concat ( E.variance(),pom2-pow ( pom,2 ) ); 
    115127                } 
     128                void qbounds ( vec &lb, vec &ub, double perc=0.95 ) const { 
     129                        //bounds on particles 
     130                        vec lbp; 
     131                        vec ubp; 
     132                        E.qbounds ( lbp,ubp ); 
     133 
     134                        //bounds on Components 
     135                        int dimC=Coms ( 0 )->dimension(); 
     136                        int j; 
     137                        // temporary 
     138                        vec lbc(dimC); 
     139                        vec ubc(dimC); 
     140                        // minima and maxima 
     141                        vec Lbc(dimC); 
     142                        vec Ubc(dimC); 
     143                        Lbc = std::numeric_limits<double>::infinity(); 
     144                        Ubc = -std::numeric_limits<double>::infinity(); 
     145 
     146                        for ( int i=0;i<_w.length();i++ ) { 
     147                                // check Coms 
     148                                Coms ( i )->qbounds ( lbc,ubc ); 
     149                                for ( j=0;j<dimC; j++ ) { 
     150                                        if ( lbc ( j ) <Lbc ( j ) ) {Lbc ( j ) =lbc ( j );} 
     151                                        if ( ubc ( j ) >Ubc ( j ) ) {Ubc ( j ) =ubc ( j );} 
     152                                } 
     153                        } 
     154                        lb=concat(lbp,Lbc); 
     155                        ub=concat(ubp,Ubc); 
     156                } 
    116157 
    117158                vec sample() const {it_error ( "Not implemented" );return 0;} 
     
    125166        //! Log means of BMs 
    126167        bool opt_L_mea; 
    127          
     168 
    128169public: 
    129170        //! Default constructor. 
    130         MPF ( mpdf *par0, mpdf *obs0, int n, const BM_T &BMcond0 ) : PF (), jest ( est ) { 
    131                 PF::set_parameters ( par0,obs0,n ); 
    132                 jest.set_n ( n ); 
    133                 // 
    134                 //TODO test if rv and BMcond.rv are compatible. 
    135 //              rv.add ( rvlin ); 
    136                 // 
    137  
    138                 if ( n>10000 ) {it_error ( "increase 10000 here!" );} 
    139  
    140                 for ( int i=0;i<n;i++ ) { 
    141                         Bms[i] = new BM_T ( BMcond0 ); //copy constructor 
    142                         const epdf& pom=Bms[i]->posterior(); 
    143                         jest.set_elements ( i,1.0/n,&pom ); 
    144                 } 
     171        MPF () : PF (), jest ( est ) {}; 
     172        void set_parameters ( mpdf *par0, mpdf *obs0, int n0, RESAMPLING_METHOD rm=SYSTEMATIC ) { 
     173                PF::set_parameters ( par0, obs0, n0, rm ); 
     174                jest.set_parameters ( n0 );//duplication of rm 
     175                BMs.set_length ( n0 ); 
     176        } 
     177        void set_statistics ( epdf *epdf0, const BM_T* BMcond0 ) { 
     178 
     179                PF::set_statistics ( ones ( n ) /n, epdf0 ); 
     180                // copy 
     181                for ( int i=0;i<n;i++ ) { BMs ( i ) = new BM_T ( *BMcond0 ); BMs ( i )->condition ( _samples ( i ) );} 
     182 
     183                jest.read_statistics ( BMs ); 
     184                //options 
    145185        }; 
    146  
    147         ~MPF() { 
    148         } 
    149186 
    150187        void bayes ( const vec &dt ); 
    151188        const epdf& posterior() const {return jest;} 
    152189        const epdf* _e() const {return &jest;} //Fixme: is it useful? 
    153         //! Set postrior of \c rvc to samples from epdf0. Statistics of Bms are not re-computed! Use only for initialization! 
    154         void set_est ( const epdf& epdf0 ) { 
    155                 PF::set_est ( epdf0 );  // sample params in condition 
    156                 // copy conditions to BMs 
    157  
    158                 for ( int i=0;i<n;i++ ) {Bms[i]->condition ( _samples ( i ) );} 
    159         } 
    160         void set_options(const string &opt){ 
    161                 PF:set_options(opt); 
    162                 opt_L_mea = ( s.find ( "logmeans" ) !=string::npos ); 
    163         } 
    164          
     190        //! Set postrior of \c rvc to samples from epdf0. Statistics of BMs are not re-computed! Use only for initialization! 
     191        /*      void set_est ( const epdf& epdf0 ) { 
     192                        PF::set_est ( epdf0 );  // sample params in condition 
     193                        // copy conditions to BMs 
     194 
     195                        for ( int i=0;i<n;i++ ) {BMs(i)->condition ( _samples ( i ) );} 
     196                }*/ 
     197        void set_options ( const string &opt ) { 
     198                PF::set_options ( opt ); 
     199                opt_L_mea = ( opt.find ( "logmeans" ) !=string::npos ); 
     200        } 
     201 
    165202        //!Access function 
    166         BM* _BM ( int i ) {return Bms[i];} 
     203        BM* _BM ( int i ) {return BMs ( i );} 
    167204}; 
    168205 
     
    180217                _samples ( i ) = par->samplecond ( _samples ( i ) ); 
    181218                llsP ( i ) = par->_e()->evallog ( _samples ( i ) ); 
    182                 Bms[i]->condition ( _samples ( i ) ); 
    183                 Bms[i]->bayes ( dt ); 
    184                 lls ( i ) = Bms[i]->_ll(); // lls above is also in proposal her must be lls(i) =, not +=!! 
     219                BMs ( i )->condition ( _samples ( i ) ); 
     220                BMs ( i )->bayes ( dt ); 
     221                lls ( i ) = BMs ( i )->_ll(); // lls above is also in proposal her must be lls(i) =, not +=!! 
    185222                if ( lls ( i ) >mlls ) mlls=lls ( i ); //find maximum likelihood (for numerical stability) 
    186223        } 
     
    204241        double eff = 1.0/ ( _w*_w ); 
    205242        if ( eff < ( 0.3*n ) ) { 
    206                 ind = est.resample(); 
     243                ind = est.resample ( resmethod ); 
    207244                // Resample Bms! 
    208245 
     
    215252                                // poor-man's solution: replicate constructor here 
    216253                                // copied from MPF::MPF 
    217                                 delete Bms[i]; 
    218                                 Bms[i] = new BM_T ( *Bms[ind ( i ) ] ); //copy constructor 
    219                                 const epdf& pom=Bms[i]->posterior(); 
     254                                delete BMs ( i ); 
     255                                BMs ( i ) = new BM_T ( *BMs ( ind ( i ) ) ); //copy constructor 
     256                                const epdf& pom=BMs ( i )->posterior(); 
    220257                                jest.set_elements ( i,1.0/n,&pom ); 
    221258                        } 
  • bdm/estim/merger.cpp

    r278 r283  
    3333        it_assert_debug ( rv.equal ( g0->_rv() ),"Incompatible g0" ); 
    3434        //Empirical density - samples 
    35         eSmp.set_parameters ( ones ( Ns ), g0 ); 
     35        eSmp.set_statistics ( ones ( Ns ), g0 ); 
    3636        Array<vec> &Smp = eSmp._samples(); //aux 
    3737        vec &w = eSmp._w(); //aux 
  • bdm/estim/merger.h

    r278 r283  
    7171        } 
    7272//! Set internal parameters used in approximation 
    73         void set_parameters ( double beta0, int Ns0, int Nc0 ) {beta=beta0;Ns=Ns0;Nc=Nc0;eSmp.set_n(Ns0,false);} 
     73        void set_parameters ( double beta0, int Ns0, int Nc0 ) {beta=beta0;Ns=Ns0;Nc=Nc0;eSmp.set_parameters(Ns0,false);} 
    7474//!Initialize the proposal density. This function must be called before merge()! 
    7575        void init() { ////////////// NOT FINISHED 
  • bdm/stat/libBM.h

    r281 r283  
    126126        int length() const {return len;} ; 
    127127        int id ( int at ) const{return ids ( at );}; 
    128         int size ( int at ) const {return RV_SIZES ( ids(at) );}; 
     128        int size ( int at ) const {return RV_SIZES ( ids ( at ) );}; 
    129129        int time ( int at ) const{return times ( at );}; 
    130         std::string name ( int at ) const {return RV_NAMES ( ids(at) );}; 
     130        std::string name ( int at ) const {return RV_NAMES ( ids ( at ) );}; 
    131131        void set_time ( int at, int time0 ) {times ( at ) =time0;}; 
    132132        //!@} 
     
    204204 
    205205        //! access function 
    206         int _dimy() const{return dimy;} 
     206        int dimension() const{return dimy;} 
    207207}; 
    208208 
     
    259259        //! return expected variance (not covariance!) 
    260260        virtual vec variance() const {it_error ( "not implemneted" );return vec ( 0 );}; 
     261        //! Lower and upper bounds of \c percentage % quantile, returns mean-2*sigma as default 
     262        virtual void qbounds ( vec &lb, vec &ub, double percentage=0.95 ) const { 
     263                vec mea=mean(); vec std=sqrt(variance());  
     264                lb = mea-2*std; ub=mea+2*std; 
     265        }; 
    261266        //!@} 
    262267 
     
    592597/*! \brief Bayesian Model of a system, i.e. all uncertainty is modeled by probabilities. 
    593598 
     599This object represents exact or approximate evaluation of the Bayes rule: 
     600\f[ 
     601f(\theta_t | d_1,\ldots,d_t) = \frac{f(y_t|\theta_t,\cdot) f(\theta_t|d_1,\ldots,d_{t-1})}{f(y_t|d_1,\ldots,d_{t-1})} 
     602\f] 
     603 
     604Access to the resulting posterior density is via function \c posterior(). 
     605 
     606As a "side-effect" it also evaluates log-likelihood of the data, which can be accessed via function _ll(). 
     607It can also evaluate predictors of future values of \f$y_t\f$, see functions epredictor() and predictor(). 
     608 
     609Alternatively, it can evaluate posterior density conditioned by a known constant, \f$ c_t \f$: 
     610\f[ 
     611f(\theta_t | c_t, d_1,\ldots,d_t) \propto  f(y_t,\theta_t|c_t,\cdot, d_1,\ldots,d_{t-1}) 
     612\f] 
     613 
     614The value of \f$ c_t \f$ is set by function condition(). 
     615 
    594616*/ 
    595617 
     
    606628        //! @{ 
    607629 
    608         BM () :ll ( 0 ),evalll ( true) {}; 
     630        BM () :ll ( 0 ),evalll ( true ), LIDs ( 3 ), opt_L_bounds ( false ) {}; 
    609631        BM ( const BM &B ) :  drv ( B.drv ), ll ( B.ll ), evalll ( B.evalll ) {} 
    610632        //! Copy function required in vectors, Arrays of BM etc. Have to be DELETED manually! 
    611         //! Prototype: \code BM* _copy_(){return new BM(*this);} \endcode 
    612         virtual BM* _copy_ () {return NULL;}; 
     633        //! Prototype: \code BM* _copy_() const {return new BM(*this);} \endcode 
     634        virtual BM* _copy_ () const {return NULL;}; 
    613635        //!@} 
    614636 
     
    634656        //!@} 
    635657 
     658        //! \name Extension to conditional BM 
     659        //! This extension is useful e.g. in Marginalized Particle Filter (\ref bdm::MPF). 
     660        //! Alternatively, it can be used for automated connection to DS when the condition is observed 
     661        //!@{ 
     662 
     663        //! Name of extension variable 
     664        RV rvc; 
     665        //! access function 
     666        const RV& _rvc() const {return rvc;} 
     667 
     668        //! Substitute \c val for \c rvc. 
     669        virtual void condition ( const vec &val ) {it_error ( "Not implemented!" );}; 
     670 
     671        //!@} 
     672 
     673 
    636674        //! \name Access to attributes 
    637675        //!@{ 
     
    646684        //!@} 
    647685 
    648 }; 
    649  
    650 /*! 
    651 \brief Conditional Bayesian Filter 
    652  
    653 Evaluates conditional filtering density \f$f(rv|rvc,data)\f$ for a given \c rvc which is specified in each step by calling function \c condition. 
    654  
    655 This is an interface class used to assure that certain BM has operation \c condition . 
    656  
    657 */ 
    658  
    659 class BMcond :public bdmroot { 
    660 protected: 
    661         //!dimension of the conditioning variable 
    662         int dimc; 
    663         //! Identificator of the conditioning variable 
    664         RV rvc; 
    665 public: 
    666         //! Substitute \c val for \c rvc. 
    667         virtual void condition ( const vec &val ) =0; 
    668         //! Default constructor 
    669         BMcond ( ) :rvc ( ) {}; 
    670         //! Destructor for future use 
    671         virtual ~BMcond() {}; 
    672         //! access function 
    673         const RV& _rvc() const {return rvc;} 
     686        //! \name Logging of results 
     687        //!@{ 
     688 
     689        //! Set boolean options from a string 
     690        void set_options ( const string &opt ) { 
     691                opt_L_bounds= ( opt.find ( "logbounds" ) !=string::npos ); 
     692        } 
     693        //! IDs of storages in loggers 
     694        ivec LIDs; 
     695 
     696        //! Option for logging bounds 
     697        bool opt_L_bounds; 
     698        //! Add all logged variables to a logger 
     699        void log_add ( logger *L, const string &name="" ) { 
     700                // internal 
     701                RV r; 
     702                if ( posterior().isnamed() ) {r=posterior()._rv();} 
     703                else{r=RV ( "est", posterior().dimension() );}; 
     704 
     705                // Add mean value 
     706                LIDs ( 0 ) =L->add ( r,name ); 
     707                if ( opt_L_bounds ) { 
     708                        LIDs ( 1 ) =L->add ( r,name+"_lb" ); 
     709                        LIDs ( 2 ) =L->add ( r,name+"_ub" ); 
     710                } 
     711        } 
     712        void logit ( logger *L ) { 
     713                L->logit ( LIDs ( 0 ), posterior().mean() ); 
     714                if ( opt_L_bounds ) { 
     715                        vec ub,lb; 
     716                        posterior().qbounds(lb,ub); 
     717                        L->logit ( LIDs ( 1 ), lb ); 
     718                        L->logit ( LIDs ( 2 ), ub ); 
     719                } 
     720        } 
     721        //!@} 
    674722}; 
    675723 
  • bdm/stat/libDS.h

    r271 r283  
    2828*/ 
    2929class MemDS : public DS { 
     30        protected: 
    3031        //! internal matrix of data 
    3132        mat Data; 
     
    4546        void step(); 
    4647        //!Default constructor 
     48        MemDS () {}; 
    4749        MemDS ( mat &Dat, ivec &rowid, ivec &delays ); 
     50}; 
     51 
     52/*! Read Data Matrix from an IT file 
     53 
     54*/ 
     55class FileDS: public MemDS { 
     56 
     57public: 
     58        FileDS ( const string &fname, const string &varname ) :MemDS() { 
     59                it_file it ( fname ); 
     60                it << Name ( varname );  
     61                it >> Data; 
     62                time =0; 
     63                //rowid and delays are ignored 
     64        } 
     65        void getdata ( vec &dt ) { 
     66                it_assert_debug ( dt.length() ==Data.rows(),"" ); 
     67                dt = Data.get_col(time); 
     68        }; 
     69        void getdata ( vec &dt, const ivec &indeces ){ 
     70                it_assert_debug ( dt.length() ==indeces.length(),"" ); 
     71                vec tmp(indeces.length()); 
     72                tmp = Data.get_col(time); 
     73                dt = tmp(indeces); 
     74        }; 
     75        //! returns number of data in the file; 
     76        int ndat(){return Data.cols();} 
    4877}; 
    4978 
     
    96125        { model.set_parameters ( Th0, mu0, sqR0 );}; 
    97126        //! Set 
    98         void set_drv(RV &yrv, RV &urv, RV &rrv){ 
     127        void set_drv ( RV &yrv, RV &urv, RV &rrv ) { 
    99128                Rrv = rrv; 
    100129                Urv = urv; 
    101                 dt_size = yrv._dsize()+urv._dsize(); 
    102                  
    103                 RV drv = concat(yrv,urv); 
     130                dt_size = yrv._dsize() +urv._dsize(); 
     131 
     132                RV drv = concat ( yrv,urv ); 
    104133                Drv = drv; 
    105134                int td = rrv.mint(); 
    106                 H.set_size(drv._dsize()*(-td+1)); 
    107                 U.set_size(Urv._dsize()); 
    108                 for (int i=-1;i>=td;i--){ 
    109                         drv.t(-1); 
    110                         Drv.add(drv); //shift u1 
     135                H.set_size ( drv._dsize() * ( -td+1 ) ); 
     136                U.set_size ( Urv._dsize() ); 
     137                for ( int i=-1;i>=td;i-- ) { 
     138                        drv.t ( -1 ); 
     139                        Drv.add ( drv ); //shift u1 
    111140                } 
    112                 rgrlnk.set_connection(rrv,Drv); 
    113                  
     141                rgrlnk.set_connection ( rrv,Drv ); 
     142 
    114143                dtsize = Drv._dsize(); 
    115144                utsize = Urv._dsize(); 
     
    121150        virtual void log_add ( logger &L ) { 
    122151                //DS::log_add ( L ); too long!! 
    123                 L_dt=L.add ( Drv(0,dt_size),"" ); 
     152                L_dt=L.add ( Drv ( 0,dt_size ),"" ); 
    124153                L_ut=L.add ( Urv,"" ); 
    125154 
     
    131160        virtual void logit ( logger &L ) { 
    132161                //DS::logit ( L ); 
    133                 L.logit( L_dt, H.left(dt_size)); 
    134                 L.logit(L_ut, U); 
    135                  
     162                L.logit ( L_dt, H.left ( dt_size ) ); 
     163                L.logit ( L_ut, U ); 
     164 
    136165                mat &A =model._A(); 
    137166                mat R =model._R(); 
  • bdm/stat/libEF.cpp

    r281 r283  
    183183}; 
    184184 
    185 ivec eEmp::resample ( RESAMPLING_METHOD method ) { 
     185ivec eEmp::resample (RESAMPLING_METHOD method) { 
    186186        ivec ind=zeros_i ( n ); 
    187187        ivec N_babies = zeros_i ( n ); 
     
    268268} 
    269269 
    270 void eEmp::set_parameters ( const vec &w0, const epdf* epdf0 ) { 
     270void eEmp::set_statistics ( const vec &w0, const epdf* epdf0 ) { 
    271271        //it_assert_debug(rv==epdf0->rv(),"Wrong epdf0"); 
    272272        dim = epdf0->dimension(); 
  • bdm/stat/libEF.h

    r281 r283  
    9494//      virtual void flatten ( double nu0 ) {it_error ( "Not implemented" );} 
    9595 
    96         BMEF* _copy_ ( bool changerv=false ) {it_error ( "function _copy_ not implemented for this BM" ); return NULL;}; 
     96        BMEF* _copy_ ( bool changerv=false ) const {it_error ( "function _copy_ not implemented for this BM" ); return NULL;}; 
    9797}; 
    9898 
     
    348348 \f] 
    349349 
     350Vector \f$\beta\f$ has different meaning (in fact it is 1/beta as used in definition of iG) 
     351 
    350352 Inverse Gamma can be converted to Gamma using \f[ 
    351353 x\sim iG(a,b) => 1/x\sim G(a,1/b) 
     
    354356 */ 
    355357 
    356 class eigamma : public eEF { 
    357 protected: 
    358         //!internal egamma 
    359         egamma eg; 
    360         //! Vector \f$\alpha\f$ 
    361         vec &alpha; 
    362         //! Vector \f$\beta\f$ (in fact it is 1/beta as used in definition of iG) 
    363         vec &beta; 
     358class eigamma : public egamma { 
     359protected: 
    364360public : 
    365361        //! \name Constructors 
    366         //!@{ 
    367         eigamma ( ) :eEF ( ), eg(),alpha ( eg._alpha() ), beta ( eg._beta() ) {}; 
    368         eigamma ( const vec &a, const vec &b ) :eEF ( ), eg(),alpha ( eg._alpha() ), beta ( eg._beta() ) {eg.set_parameters ( a,b );}; 
    369         void set_parameters ( const vec &a, const vec &b ) {eg.set_parameters ( a,b );}; 
    370         //!@} 
    371  
    372         vec sample() const {return 1.0/eg.sample();}; 
    373         //! TODO: is it used anywhere? 
    374 //      mat sample ( int N ) const; 
    375         double evallog ( const vec &val ) const {return eg.evallog ( val );}; 
    376         double lognc () const {return eg.lognc();}; 
     362        //! All constructors are inherited 
     363        //!@{ 
     364        //!@} 
     365 
     366        vec sample() const {return 1.0/egamma::sample();}; 
    377367        //! Returns poiter to alpha and beta. Potentially dangerous: use with care! 
    378368        vec mean() const {return elem_div ( beta,alpha-1 );} 
    379369        vec variance() const {vec mea=mean(); return elem_div ( elem_mult ( mea,mea ),alpha-2 );} 
    380         vec& _alpha() {return alpha;} 
    381         vec& _beta() {return beta;} 
    382370}; 
    383371/* 
     
    490478        mgnorm() :mu ( epdf._mu() ) {ep=&epdf;} 
    491479        //!set mean function 
    492         void set_parameters ( fnc* g0, const sq_T &R0 ) {g=g0; epdf.set_parameters ( zeros ( g->_dimy() ), R0 );} 
     480        void set_parameters ( fnc* g0, const sq_T &R0 ) {g=g0; epdf.set_parameters ( zeros ( g->dimension() ), R0 );} 
    493481        void condition ( const vec &cond ) {mu=g->eval ( cond );}; 
    494482}; 
     
    686674 
    687675        //! Set samples and weights 
    688         void set_parameters ( const vec &w0, const epdf* pdf0 ); 
     676        void set_statistics ( const vec &w0, const epdf* pdf0 ); 
     677        //! Set samples and weights 
     678        void set_statistics ( const epdf* pdf0 , int n ) {set_statistics ( ones ( n ) /n,pdf0 );}; 
    689679        //! Set sample 
    690680        void set_samples ( const epdf* pdf0 ); 
    691681        //! Set sample 
    692         void set_n ( int n0, bool copy=true ) {n=n0; w.set_size ( n0,copy );samples.set_size ( n0,copy );}; 
     682        void set_parameters ( int n0, bool copy=true ) {n=n0; w.set_size ( n0,copy );samples.set_size ( n0,copy );}; 
    693683        //! Potentially dangerous, use with care. 
    694684        vec& _w()  {return w;}; 
     
    700690        const Array<vec>& _samples() const {return samples;}; 
    701691        //! Function performs resampling, i.e. removal of low-weight samples and duplication of high-weight samples such that the new samples represent the same density. 
    702         ivec resample ( RESAMPLING_METHOD method = SYSTEMATIC ); 
     692        ivec resample ( RESAMPLING_METHOD method=SYSTEMATIC ); 
    703693        //! inherited operation : NOT implemneted 
    704694        vec sample() const {it_error ( "Not implemented" );return 0;} 
     
    714704                for ( int i=0;i<n;i++ ) {pom+=pow ( samples ( i ),2 ) *w ( i );} 
    715705                return pom-pow ( mean(),2 ); 
     706        } 
     707        //! For this class, qbounds are minimum and maximum value of the population! 
     708        void qbounds ( vec &lb, vec &ub, double perc=0.95 ) const { 
     709                // lb in inf so than it will be pushed below; 
     710                lb.set_size(dim); 
     711                ub.set_size(dim); 
     712                lb = std::numeric_limits<double>::infinity(); 
     713                ub = -std::numeric_limits<double>::infinity(); 
     714                int j; 
     715                for ( int i=0;i<n;i++ ) { 
     716                        for ( j=0;j<dim; j++ ) { 
     717                                if ( samples ( i ) ( j ) <lb ( j ) ) {lb ( j ) =samples ( i ) ( j );} 
     718                                if ( samples ( i ) ( j ) >ub ( j ) ) {ub ( j ) =samples ( i ) ( j );} 
     719                        } 
     720                } 
    716721        } 
    717722}; 
  • doprava/k1.cpp

    r278 r283  
    1212 
    1313 
    14 #include <stat/libFN.h> 
    1514#include <estim/ekf_templ.h> 
    16 #include <stat/loggers.h> 
     15#include <stat/loggers_ui.h> 
     16#include <stat/libDS_ui.h> 
    1717 
    1818//include dopravni model 
     
    2121using namespace bdm; 
    2222 
    23 int main() { 
    24         // Pocet dat 
    25         int Ndat = 900; 
    26  
    27         // Objekt pro ukladani vysledku 
    28         memlog L(Ndat); 
    29  
     23int main( int argc, char* argv[] ) { 
     24/*      const char *fname; 
     25        if ( argc>1 ) {fname = argv[1]; } 
     26        else { fname = "k1.cfg"; } 
     27        UIFile F ( fname ); //protected by exceptions, should complain if not found*/ 
     28         
     29        FileDS DS("data.it","Data");            // Data Source 
     30        int ndat = DS.ndat();                           // number of data 
     31        memlog L(ndat);                                         // Logger 
     32        string resfile="k1_results.it";         // name of output file 
     33        vec dQ="0.1 0.1"; 
     34        vec dR="0.2 0.2";                                       // TODO: read from config file <== broken on windows 
     35         
    3036        //model vyvoje stavu 
    3137        IMk1 fxu; 
     
    3743 
    3844        // ESTIMATOR --- EKF 
    39         vec mu0= "0.0 0.0 0.0 0.0"; 
    4045        // Priprava covariancnich matic pro EKF 
    41         vec Qdiag ( "1.0 10. 10 10" );  
    42         vec Rdiag ( "1 1" ); //var(diff(xth)) = "0.034 0.034" 
    43         mat Q =diag( Qdiag ); 
    44         mat R =diag ( Rdiag ); 
    45         EKFfull Efix ( RVstav,RVpozor,RVut ); 
    46         // pocatecni podminky 
    47         Efix.set_est ( mu0, 1*eye ( 4 )  ); // nulova  
    48         // nastaveni modelu pro EKF 
    49         Efix.set_parameters ( &fxu,&hxu,Q,R); 
     46        EKFCh Efix;                                                             //Extended KF s fix. variancemi 
     47        Efix.set_parameters ( &fxu,&hxu,diag(dQ),diag(dR)); 
     48        Efix.set_statistics ( zeros(fxu.dimension()), 100*eye ( fxu.dimension() )  ); // nulova  
    5049 
    51         int L_xt = L.add(RVstav, "xt"); // Tady se rika jak velky vektor (pomoci obj. RV) se bude logovat  
    52                                                                                 // A jak se bude jsmenovat vysledek 
    53         int L_ut = L.add(RVut, "ut"); // Tady se rika jak velky vektor (pomoci obj. RV) se bude logovat  
    54                                                                                 // A jak se bude jsmenovat vysledek 
    55         int L_mean = L.add(RVstav, "odh_xt"); // Tady se rika jak velky vektor (pomoci obj. RV) se bude logovat  
    56                                                                                 // A jak se bude jsmenovat vysledek 
    57  
     50        // Definovat co se bude logovat 
     51        Efix.log_add(&L,"E"); 
    5852        L.init(); // <<==== allocate memory for results 
    59         // Priprava poli pro simulaci 
    60         vec ut(RVut.count());  
    61         vec xt(RVstav.count());  
    62         vec dt(RVpozor.count());  
    63         // minuly stav 
    64         vec xtm=zeros(RVstav.count()); // nulovy pocatecni stav 
    65         for ( int t=1;t<Ndat;t++ ) { 
    66                 // Nastaveni vstupu 
    67                 ut(0) = 1+sin((double)t/10); // V ut jsou same jednicky 
    68                 ut(1) = 1+cos((double)t/10); // V ut jsou same jednicky 
    69                  
    70                 // Generovani DAT modelem 
    71                 xt = fxu.eval(xtm,ut); 
    72                 dt = hxu.eval(xt,ut); 
    73                 xtm = xt; //save xt for the next step 
    74  
    75                 //ESTIMATE 
    76                 Efix.bayes(concat(dt,ut)); 
     53         
     54        vec dt; 
     55        for ( int t=1;t<ndat;t++ ) { 
     56                DS.getdata(dt);                 // dt is allocated 
     57                Efix.bayes(dt);                 //ESTIMATE 
    7758 
    7859                //LOG results 
    79                 L.logit(L_mean, Efix.posterior().mean() );  
    80                 L.logit(L_xt, xt );  
    81                 L.logit(L_ut, ut );  
     60                Efix.logit(&L);  
    8261                 
    8362                L.step(); 
     63                DS.step(); 
    8464        } 
    8565        L.finalize(); 
    86         L.itsave("k1.it"); 
     66        L.itsave(resfile.c_str()); 
    8767        return 0; 
    8868} 
  • doprava/model.h

    r278 r283  
    55 
    66using namespace bdm; 
    7  
    8 //Tady se naplni "popis" jednotlivych nahodnych velicin na kterych se pracuje 
    9 // Moznosti je velmi mnoho (viz doc/html/index.html): napriklad 
    10 RV RVstav ( "{stav }", "4");  // Vyrabim stav velikosti 4 
    11 RV RVut ( "{ut }", "2");     // Vstup velikosti 2 
    12 RV RVpozor ( "{I1 O1 }");     //Vystup je intenzita a obsazenost 
    137 
    148//! Model stredni hodnoty vyvoje stavu pro k1  
     
    1913public: 
    2014        //! Constructor 
    21         IMk1() :diffbifn (RVstav.count(), RVstav, RVut ) {};  
     15        IMk1() :diffbifn () {dimy=4; dimx=3; dimu=1;};  
    2216        //! set CONSTANT parameters 
    2317        void set_parameters ( double alp10,  double alp20) {alp1=alp10; alp2=alp20;} 
     
    2519        vec eval ( const vec &x0, const vec &u0 ) { 
    2620                // napln stav nulami 
    27                 vec xk=zeros ( RVstav.count() ); 
     21                vec xk=zeros ( dimy ); 
    2822 
    2923                xk ( 0 ) = 0.2* x0(1) - 0.1* x0(2)+ u0(0);  // vycucane z prstu 
     
    3933 
    4034                if (full) { // priznak full se nastavi na zacatku => je treba naplnit celou matici 
    41                         A = eye(RVstav.count()); 
     35                        A = eye(dimy); 
    4236                        A(0,1) = 0.2; 
    4337                        A(0,2) = -0.1; 
     
    5448public: 
    5549        //! Constructor 
    56         OMk1() :diffbifn (RVpozor.count(), RVstav, RVut ) {};  
     50        OMk1() :diffbifn ( ) {dimy=2;dimx=3;dimu=2;}; //<======= TODO  
    5751        // Model pozorovani  je trivialni jen se zkopiruji stavy 
    5852        vec eval(const vec &x0, const vec &u0 ){ 
    59                 vec dt(RVpozor.count()); 
     53                vec dt(dimy); 
    6054                // Pozoruji pouze prvni dva stavy 
    6155                dt(0) = x0(0); 
     
    6862 
    6963                if (full) { // priznak full se nastavi na zacatku => je treba naplnit celou matici 
    70                         A = zeros(RVpozor.count(),RVstav.count()); 
     64                        A = zeros(dimy,dimx); 
    7165                        A(0,0)=1.0; 
    7266                        A(1,1)=1.0; 
  • pmsm/TR2245/exp/unitstep.kst

    r281 r283  
    88  <graphicsautosave time="1" enabled="false" format="PNG" xsize="600" ysize="480" display="1" square="true" /> 
    99  <kstfile> 
    10     <tag>DS-mpf_test</tag> 
     10    <tag>DS-unitstep</tag> 
    1111    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    1212    <type>Directory of Binary Files</type> 
     
    1515    <tag>P1/XMin</tag> 
    1616    <orphan/> 
    17     <value>0</value> 
     17    <value>2926.358392435</value> 
    1818  </scalar> 
    1919  <scalar> 
    2020    <tag>P1/XMax</tag> 
    2121    <orphan/> 
    22     <value>8996</value> 
     22    <value>3606.906855792</value> 
    2323  </scalar> 
    2424  <scalar> 
    2525    <tag>P1/YMin</tag> 
    2626    <orphan/> 
    27     <value>-4.5157036326817</value> 
     27    <value>-0.048334607484026</value> 
    2828  </scalar> 
    2929  <scalar> 
    3030    <tag>P1/YMax</tag> 
    3131    <orphan/> 
    32     <value>7.1059942008359</value> 
     32    <value>0.51400228173259</value> 
    3333  </scalar> 
    3434  <scalar> 
    3535    <tag>P2/XMin</tag> 
    3636    <orphan/> 
    37     <value>0</value> 
     37    <value>2926.358392435</value> 
    3838  </scalar> 
    3939  <scalar> 
    4040    <tag>P2/XMax</tag> 
    4141    <orphan/> 
    42     <value>8996</value> 
     42    <value>3606.906855792</value> 
    4343  </scalar> 
    4444  <scalar> 
    4545    <tag>P2/YMin</tag> 
    4646    <orphan/> 
    47     <value>-8.7889029972173</value> 
     47    <value>-0.39028880388336</value> 
    4848  </scalar> 
    4949  <scalar> 
    5050    <tag>P2/YMax</tag> 
    5151    <orphan/> 
    52     <value>2.9406777090262</value> 
     52    <value>0.28756055295362</value> 
    5353  </scalar> 
    5454  <scalar> 
    5555    <tag>P3/XMin</tag> 
    5656    <orphan/> 
    57     <value>0</value> 
     57    <value>2926.358392435</value> 
    5858  </scalar> 
    5959  <scalar> 
    6060    <tag>P3/XMax</tag> 
    6161    <orphan/> 
    62     <value>8996</value> 
     62    <value>3606.906855792</value> 
    6363  </scalar> 
    6464  <scalar> 
    6565    <tag>P3/YMin</tag> 
    6666    <orphan/> 
    67     <value>-9.9507440023583</value> 
     67    <value>2.9364401415802</value> 
    6868  </scalar> 
    6969  <scalar> 
    7070    <tag>P3/YMax</tag> 
    7171    <orphan/> 
    72     <value>10.112057855496</value> 
     72    <value>6.8935369383091</value> 
    7373  </scalar> 
    7474  <scalar> 
    7575    <tag>P4/XMin</tag> 
    7676    <orphan/> 
    77     <value>0</value> 
     77    <value>2926.358392435</value> 
    7878  </scalar> 
    7979  <scalar> 
    8080    <tag>P4/XMax</tag> 
    8181    <orphan/> 
    82     <value>8996</value> 
     82    <value>3606.906855792</value> 
    8383  </scalar> 
    8484  <scalar> 
    8585    <tag>P4/YMin</tag> 
    8686    <orphan/> 
    87     <value>-3.2349482477224</value> 
     87    <value>1.3025848670891</value> 
    8888  </scalar> 
    8989  <scalar> 
    9090    <tag>P4/YMax</tag> 
    9191    <orphan/> 
    92     <value>1.950493542042</value> 
     92    <value>1.8398220026564</value> 
    9393  </scalar> 
    9494  <scalar> 
    9595    <tag>P5/XMin</tag> 
    9696    <orphan/> 
    97     <value>0</value> 
     97    <value>2926.358392435</value> 
    9898  </scalar> 
    9999  <scalar> 
    100100    <tag>P5/XMax</tag> 
    101101    <orphan/> 
    102     <value>8996</value> 
     102    <value>3606.906855792</value> 
    103103  </scalar> 
    104104  <scalar> 
    105105    <tag>P5/YMin</tag> 
    106106    <orphan/> 
    107     <value>-4.5157024034826</value> 
     107    <value>-0.04833941248617</value> 
    108108  </scalar> 
    109109  <scalar> 
    110110    <tag>P5/YMax</tag> 
    111111    <orphan/> 
    112     <value>7.1060502918641</value> 
     112    <value>0.51402942484196</value> 
    113113  </scalar> 
    114114  <scalar> 
    115115    <tag>P6/XMin</tag> 
    116116    <orphan/> 
    117     <value>0</value> 
     117    <value>2926.358392435</value> 
    118118  </scalar> 
    119119  <scalar> 
    120120    <tag>P6/XMax</tag> 
    121121    <orphan/> 
    122     <value>8996</value> 
     122    <value>3606.906855792</value> 
    123123  </scalar> 
    124124  <scalar> 
    125125    <tag>P6/YMin</tag> 
    126126    <orphan/> 
    127     <value>-8.7889142376003</value> 
     127    <value>-0.3902866183156</value> 
    128128  </scalar> 
    129129  <scalar> 
    130130    <tag>P6/YMax</tag> 
    131131    <orphan/> 
    132     <value>2.940623098786</value> 
     132    <value>0.2875552509328</value> 
    133133  </scalar> 
    134134  <scalar> 
    135135    <tag>P7/XMin</tag> 
    136136    <orphan/> 
    137     <value>0</value> 
     137    <value>2926.358392435</value> 
    138138  </scalar> 
    139139  <scalar> 
    140140    <tag>P7/XMax</tag> 
    141141    <orphan/> 
    142     <value>8996</value> 
     142    <value>3606.906855792</value> 
    143143  </scalar> 
    144144  <scalar> 
    145145    <tag>P7/YMin</tag> 
    146146    <orphan/> 
    147     <value>-9.9423377081818</value> 
     147    <value>2.8955198144056</value> 
    148148  </scalar> 
    149149  <scalar> 
    150150    <tag>P7/YMax</tag> 
    151151    <orphan/> 
    152     <value>10.167729809906</value> 
     152    <value>6.8845837989307</value> 
    153153  </scalar> 
    154154  <scalar> 
    155155    <tag>P8/XMin</tag> 
    156156    <orphan/> 
    157     <value>0</value> 
     157    <value>2926.358392435</value> 
    158158  </scalar> 
    159159  <scalar> 
    160160    <tag>P8/XMax</tag> 
    161161    <orphan/> 
    162     <value>8996</value> 
     162    <value>3606.906855792</value> 
    163163  </scalar> 
    164164  <scalar> 
    165165    <tag>P8/YMin</tag> 
    166166    <orphan/> 
    167     <value>-3.1990055876149</value> 
     167    <value>1.3045812312785</value> 
    168168  </scalar> 
    169169  <scalar> 
    170170    <tag>P8/YMax</tag> 
    171171    <orphan/> 
    172     <value>2.0317543342644</value> 
     172    <value>1.9219107533158</value> 
    173173  </scalar> 
    174174  <scalar> 
    175175    <tag>P9/XMin</tag> 
    176176    <orphan/> 
    177     <value>0</value> 
     177    <value>2926.358392435</value> 
    178178  </scalar> 
    179179  <scalar> 
    180180    <tag>P9/XMax</tag> 
    181181    <orphan/> 
    182     <value>8996</value> 
     182    <value>3606.906855792</value> 
    183183  </scalar> 
    184184  <scalar> 
    185185    <tag>P9/YMin</tag> 
    186186    <orphan/> 
    187     <value>-4.5157373665507</value> 
     187    <value>-0.048337870582494</value> 
    188188  </scalar> 
    189189  <scalar> 
    190190    <tag>P9/YMax</tag> 
    191191    <orphan/> 
    192     <value>7.1060009663093</value> 
     192    <value>0.51406761152853</value> 
    193193  </scalar> 
    194194  <scalar> 
    195195    <tag>P10/XMin</tag> 
    196196    <orphan/> 
    197     <value>0</value> 
     197    <value>2926.358392435</value> 
    198198  </scalar> 
    199199  <scalar> 
    200200    <tag>P10/XMax</tag> 
    201201    <orphan/> 
    202     <value>8996</value> 
     202    <value>3606.906855792</value> 
    203203  </scalar> 
    204204  <scalar> 
    205205    <tag>P10/YMin</tag> 
    206206    <orphan/> 
    207     <value>-8.7889175939615</value> 
     207    <value>-0.39028810807047</value> 
    208208  </scalar> 
    209209  <scalar> 
    210210    <tag>P10/YMax</tag> 
    211211    <orphan/> 
    212     <value>2.9407047630982</value> 
     212    <value>0.28761404165682</value> 
    213213  </scalar> 
    214214  <scalar> 
    215215    <tag>P11/XMin</tag> 
    216216    <orphan/> 
    217     <value>0</value> 
     217    <value>2926.358392435</value> 
    218218  </scalar> 
    219219  <scalar> 
    220220    <tag>P11/XMax</tag> 
    221221    <orphan/> 
    222     <value>8996</value> 
     222    <value>3606.906855792</value> 
    223223  </scalar> 
    224224  <scalar> 
    225225    <tag>P11/YMin</tag> 
    226226    <orphan/> 
    227     <value>-9.9423985713648</value> 
     227    <value>2.9290394221155</value> 
    228228  </scalar> 
    229229  <scalar> 
    230230    <tag>P11/YMax</tag> 
    231231    <orphan/> 
    232     <value>10.156071405218</value> 
     232    <value>6.8868281881701</value> 
    233233  </scalar> 
    234234  <scalar> 
    235235    <tag>P12/XMin</tag> 
    236236    <orphan/> 
    237     <value>0</value> 
     237    <value>2926.358392435</value> 
    238238  </scalar> 
    239239  <scalar> 
    240240    <tag>P12/XMax</tag> 
    241241    <orphan/> 
    242     <value>8996</value> 
     242    <value>3606.906855792</value> 
    243243  </scalar> 
    244244  <scalar> 
    245245    <tag>P12/YMin</tag> 
    246246    <orphan/> 
    247     <value>-3.2332263813866</value> 
     247    <value>1.3064345453176</value> 
    248248  </scalar> 
    249249  <scalar> 
    250250    <tag>P12/YMax</tag> 
    251251    <orphan/> 
    252     <value>1.9992572404254</value> 
     252    <value>1.8885338031887</value> 
    253253  </scalar> 
    254254  <scalar> 
    255255    <tag>P13/XMin</tag> 
    256256    <orphan/> 
    257     <value>0</value> 
     257    <value>2926.358392435</value> 
    258258  </scalar> 
    259259  <scalar> 
    260260    <tag>P13/XMax</tag> 
    261261    <orphan/> 
    262     <value>8996</value> 
     262    <value>3606.906855792</value> 
    263263  </scalar> 
    264264  <scalar> 
    265265    <tag>P13/YMin</tag> 
    266266    <orphan/> 
    267     <value>-2.4976711470358e-07</value> 
     267    <value>-5.1884392049895e-08</value> 
    268268  </scalar> 
    269269  <scalar> 
    270270    <tag>P13/YMax</tag> 
    271271    <orphan/> 
    272     <value>2.093709004069e-05</value> 
     272    <value>7.396627640389e-06</value> 
    273273  </scalar> 
    274274  <scalar> 
    275275    <tag>P14/XMin</tag> 
    276276    <orphan/> 
    277     <value>0</value> 
     277    <value>2926.358392435</value> 
    278278  </scalar> 
    279279  <scalar> 
    280280    <tag>P14/XMax</tag> 
    281281    <orphan/> 
    282     <value>8996</value> 
     282    <value>3606.906855792</value> 
    283283  </scalar> 
    284284  <scalar> 
    285285    <tag>P14/YMin</tag> 
    286286    <orphan/> 
    287     <value>-5.4365964898493e-07</value> 
     287    <value>-2.4282594344782e-06</value> 
    288288  </scalar> 
    289289  <scalar> 
    290290    <tag>P14/YMax</tag> 
    291291    <orphan/> 
    292     <value>3.2021199309101e-05</value> 
     292    <value>0.00010541853909026</value> 
    293293  </scalar> 
    294294  <scalar> 
    295295    <tag>P15/XMin</tag> 
    296296    <orphan/> 
    297     <value>0</value> 
     297    <value>2926.358392435</value> 
    298298  </scalar> 
    299299  <scalar> 
    300300    <tag>P15/XMax</tag> 
    301301    <orphan/> 
    302     <value>8996</value> 
     302    <value>3606.906855792</value> 
    303303  </scalar> 
    304304  <scalar> 
    305305    <tag>P15/YMin</tag> 
    306306    <orphan/> 
    307     <value>-0.00037357938771325</value> 
     307    <value>-0.00017880685614156</value> 
    308308  </scalar> 
    309309  <scalar> 
    310310    <tag>P15/YMax</tag> 
    311311    <orphan/> 
    312     <value>0.01812882974232</value> 
     312    <value>0.0107775025083</value> 
    313313  </scalar> 
    314314  <scalar> 
    315315    <tag>P16/XMin</tag> 
    316316    <orphan/> 
    317     <value>0</value> 
     317    <value>2926.358392435</value> 
    318318  </scalar> 
    319319  <scalar> 
    320320    <tag>P16/XMax</tag> 
    321321    <orphan/> 
    322     <value>8996</value> 
     322    <value>3606.906855792</value> 
    323323  </scalar> 
    324324  <scalar> 
    325325    <tag>P16/YMin</tag> 
    326326    <orphan/> 
    327     <value>-0.00015311709117417</value> 
     327    <value>-2.8901098199394e-05</value> 
    328328  </scalar> 
    329329  <scalar> 
    330330    <tag>P16/YMax</tag> 
    331331    <orphan/> 
    332     <value>0.0066825740776078</value> 
     332    <value>0.0013375207853002</value> 
    333333  </scalar> 
    334334  <vector> 
    335     <tag>DS-mpf_test/INDEX</tag> 
    336     <provider>DS-mpf_test</provider> 
     335    <tag>DS-unitstep/INDEX</tag> 
     336    <provider>DS-unitstep</provider> 
    337337    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    338338    <field>INDEX</field> 
     
    341341  </vector> 
    342342  <vector> 
    343     <tag>DS-mpf_test/xt_ia</tag> 
    344     <provider>DS-mpf_test</provider> 
     343    <tag>DS-unitstep/xt_ia</tag> 
     344    <provider>DS-unitstep</provider> 
    345345    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    346346    <field>xt_ia</field> 
     
    349349  </vector> 
    350350  <vector> 
    351     <tag>DS-mpf_test/xt_ib</tag> 
    352     <provider>DS-mpf_test</provider> 
     351    <tag>DS-unitstep/xt_ib</tag> 
     352    <provider>DS-unitstep</provider> 
    353353    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    354354    <field>xt_ib</field> 
     
    357357  </vector> 
    358358  <vector> 
    359     <tag>DS-mpf_test/xt_om</tag> 
    360     <provider>DS-mpf_test</provider> 
     359    <tag>DS-unitstep/xt_om</tag> 
     360    <provider>DS-unitstep</provider> 
    361361    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    362362    <field>xt_om</field> 
     
    365365  </vector> 
    366366  <vector> 
    367     <tag>DS-mpf_test/xt_th</tag> 
    368     <provider>DS-mpf_test</provider> 
     367    <tag>DS-unitstep/xt_th</tag> 
     368    <provider>DS-unitstep</provider> 
    369369    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    370370    <field>xt_th</field> 
     
    373373  </vector> 
    374374  <vector> 
    375     <tag>DS-mpf_test/xtE_ia</tag> 
    376     <provider>DS-mpf_test</provider> 
     375    <tag>DS-unitstep/KF_ia</tag> 
     376    <provider>DS-unitstep</provider> 
    377377    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    378     <field>xtE_ia</field> 
     378    <field>KF_ia</field> 
    379379    <start>-1</start> 
    380380    <num>89996</num> 
    381381  </vector> 
    382382  <vector> 
    383     <tag>DS-mpf_test/xtE_ib</tag> 
    384     <provider>DS-mpf_test</provider> 
     383    <tag>DS-unitstep/KF_ib</tag> 
     384    <provider>DS-unitstep</provider> 
    385385    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    386     <field>xtE_ib</field> 
     386    <field>KF_ib</field> 
    387387    <start>-1</start> 
    388388    <num>89996</num> 
    389389  </vector> 
    390390  <vector> 
    391     <tag>DS-mpf_test/xtE_om</tag> 
    392     <provider>DS-mpf_test</provider> 
     391    <tag>DS-unitstep/KF_om</tag> 
     392    <provider>DS-unitstep</provider> 
    393393    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    394     <field>xtE_om</field> 
     394    <field>KF_om</field> 
    395395    <start>-1</start> 
    396396    <num>89996</num> 
    397397  </vector> 
    398398  <vector> 
    399     <tag>DS-mpf_test/xtE_th</tag> 
    400     <provider>DS-mpf_test</provider> 
     399    <tag>DS-unitstep/KF_th</tag> 
     400    <provider>DS-unitstep</provider> 
    401401    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    402     <field>xtE_th</field> 
     402    <field>KF_th</field> 
    403403    <start>-1</start> 
    404404    <num>89996</num> 
    405405  </vector> 
    406406  <vector> 
    407     <tag>DS-mpf_test/xtM_ia</tag> 
    408     <provider>DS-mpf_test</provider> 
     407    <tag>DS-unitstep/M_ia</tag> 
     408    <provider>DS-unitstep</provider> 
    409409    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    410     <field>xtM_ia</field> 
     410    <field>M_ia</field> 
    411411    <start>-1</start> 
    412412    <num>89996</num> 
    413413  </vector> 
    414414  <vector> 
    415     <tag>DS-mpf_test/xtM_ib</tag> 
    416     <provider>DS-mpf_test</provider> 
     415    <tag>DS-unitstep/M_ib</tag> 
     416    <provider>DS-unitstep</provider> 
    417417    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    418     <field>xtM_ib</field> 
     418    <field>M_ib</field> 
    419419    <start>-1</start> 
    420420    <num>89996</num> 
    421421  </vector> 
    422422  <vector> 
    423     <tag>DS-mpf_test/xtM_om</tag> 
    424     <provider>DS-mpf_test</provider> 
     423    <tag>DS-unitstep/M_om</tag> 
     424    <provider>DS-unitstep</provider> 
    425425    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    426     <field>xtM_om</field> 
     426    <field>M_om</field> 
    427427    <start>-1</start> 
    428428    <num>89996</num> 
    429429  </vector> 
    430430  <vector> 
    431     <tag>DS-mpf_test/xtM_th</tag> 
    432     <provider>DS-mpf_test</provider> 
     431    <tag>DS-unitstep/M_th</tag> 
     432    <provider>DS-unitstep</provider> 
    433433    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    434     <field>xtM_th</field> 
     434    <field>M_th</field> 
    435435    <start>-1</start> 
    436436    <num>89996</num> 
    437437  </vector> 
    438438  <vector> 
    439     <tag>DS-mpf_test/xtM_Q_0</tag> 
    440     <provider>DS-mpf_test</provider> 
     439    <tag>DS-unitstep/M_Q_0</tag> 
     440    <provider>DS-unitstep</provider> 
    441441    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    442     <field>xtM_Q_0</field> 
     442    <field>M_Q_0</field> 
    443443    <start>-1</start> 
    444444    <num>89996</num> 
    445445  </vector> 
    446446  <vector> 
    447     <tag>DS-mpf_test/xtM_Q_1</tag> 
    448     <provider>DS-mpf_test</provider> 
     447    <tag>DS-unitstep/M_Q_1</tag> 
     448    <provider>DS-unitstep</provider> 
    449449    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    450     <field>xtM_Q_1</field> 
     450    <field>M_Q_1</field> 
    451451    <start>-1</start> 
    452452    <num>89996</num> 
    453453  </vector> 
    454454  <vector> 
    455     <tag>DS-mpf_test/xtM_Q_2</tag> 
    456     <provider>DS-mpf_test</provider> 
     455    <tag>DS-unitstep/M_Q_2</tag> 
     456    <provider>DS-unitstep</provider> 
    457457    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    458     <field>xtM_Q_2</field> 
     458    <field>M_Q_2</field> 
    459459    <start>-1</start> 
    460460    <num>89996</num> 
    461461  </vector> 
    462462  <vector> 
    463     <tag>DS-mpf_test/xtM_Q_3</tag> 
    464     <provider>DS-mpf_test</provider> 
     463    <tag>DS-unitstep/M_Q_3</tag> 
     464    <provider>DS-unitstep</provider> 
    465465    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    466     <field>xtM_Q_3</field> 
     466    <field>M_Q_3</field> 
    467467    <start>-1</start> 
    468468    <num>89996</num> 
    469469  </vector> 
    470470  <vector> 
    471     <tag>DS-mpf_test/Q_0</tag> 
    472     <provider>DS-mpf_test</provider> 
     471    <tag>DS-unitstep/Q_0</tag> 
     472    <provider>DS-unitstep</provider> 
    473473    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    474474    <field>Q_0</field> 
     
    477477  </vector> 
    478478  <vector> 
    479     <tag>DS-mpf_test/Q_1</tag> 
    480     <provider>DS-mpf_test</provider> 
     479    <tag>DS-unitstep/Q_1</tag> 
     480    <provider>DS-unitstep</provider> 
    481481    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    482482    <field>Q_1</field> 
     
    485485  </vector> 
    486486  <vector> 
    487     <tag>DS-mpf_test/Q_2</tag> 
    488     <provider>DS-mpf_test</provider> 
     487    <tag>DS-unitstep/Q_2</tag> 
     488    <provider>DS-unitstep</provider> 
    489489    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    490490    <field>Q_2</field> 
     
    493493  </vector> 
    494494  <vector> 
    495     <tag>DS-mpf_test/Q_3</tag> 
    496     <provider>DS-mpf_test</provider> 
     495    <tag>DS-unitstep/Q_3</tag> 
     496    <provider>DS-unitstep</provider> 
    497497    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
    498498    <field>Q_3</field> 
     
    500500    <num>89996</num> 
    501501  </vector> 
     502  <vector> 
     503    <tag>DS-unitstep/M_ub_Q_0</tag> 
     504    <provider>DS-unitstep</provider> 
     505    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
     506    <field>M_ub_Q_0</field> 
     507    <start>-1</start> 
     508    <num>89996</num> 
     509  </vector> 
     510  <vector> 
     511    <tag>DS-unitstep/M_ub_Q_1</tag> 
     512    <provider>DS-unitstep</provider> 
     513    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
     514    <field>M_ub_Q_1</field> 
     515    <start>-1</start> 
     516    <num>89996</num> 
     517  </vector> 
     518  <vector> 
     519    <tag>DS-unitstep/M_ub_Q_2</tag> 
     520    <provider>DS-unitstep</provider> 
     521    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
     522    <field>M_ub_Q_2</field> 
     523    <start>-1</start> 
     524    <num>89996</num> 
     525  </vector> 
     526  <vector> 
     527    <tag>DS-unitstep/M_ub_Q_3</tag> 
     528    <provider>DS-unitstep</provider> 
     529    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
     530    <field>M_ub_Q_3</field> 
     531    <start>-1</start> 
     532    <num>89996</num> 
     533  </vector> 
     534  <vector> 
     535    <tag>DS-unitstep/M_lb_Q_0</tag> 
     536    <provider>DS-unitstep</provider> 
     537    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
     538    <field>M_lb_Q_0</field> 
     539    <start>-1</start> 
     540    <num>89996</num> 
     541  </vector> 
     542  <vector> 
     543    <tag>DS-unitstep/M_lb_Q_1</tag> 
     544    <provider>DS-unitstep</provider> 
     545    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
     546    <field>M_lb_Q_1</field> 
     547    <start>-1</start> 
     548    <num>89996</num> 
     549  </vector> 
     550  <vector> 
     551    <tag>DS-unitstep/M_lb_Q_2</tag> 
     552    <provider>DS-unitstep</provider> 
     553    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
     554    <field>M_lb_Q_2</field> 
     555    <start>-1</start> 
     556    <num>89996</num> 
     557  </vector> 
     558  <vector> 
     559    <tag>DS-unitstep/M_lb_Q_3</tag> 
     560    <provider>DS-unitstep</provider> 
     561    <filename>/home/smidl/work/git/mixpp/pmsm/TR2245/exp/unitstep/</filename> 
     562    <field>M_lb_Q_3</field> 
     563    <start>-1</start> 
     564    <num>89996</num> 
     565  </vector> 
    502566  <curve> 
    503567    <tag>xt_ia</tag> 
    504     <xvectag>DS-mpf_test/INDEX</xvectag> 
    505     <yvectag>DS-mpf_test/xt_ia</yvectag> 
     568    <xvectag>DS-unitstep/INDEX</xvectag> 
     569    <yvectag>DS-unitstep/xt_ia</yvectag> 
    506570    <legend></legend> 
    507571    <interp>0</interp> 
     
    517581  <curve> 
    518582    <tag>xt_ib</tag> 
    519     <xvectag>DS-mpf_test/INDEX</xvectag> 
    520     <yvectag>DS-mpf_test/xt_ib</yvectag> 
     583    <xvectag>DS-unitstep/INDEX</xvectag> 
     584    <yvectag>DS-unitstep/xt_ib</yvectag> 
    521585    <legend></legend> 
    522586    <interp>0</interp> 
     
    532596  <curve> 
    533597    <tag>xt_om</tag> 
    534     <xvectag>DS-mpf_test/INDEX</xvectag> 
    535     <yvectag>DS-mpf_test/xt_om</yvectag> 
     598    <xvectag>DS-unitstep/INDEX</xvectag> 
     599    <yvectag>DS-unitstep/xt_om</yvectag> 
    536600    <legend></legend> 
    537601    <interp>0</interp> 
     
    547611  <curve> 
    548612    <tag>xt_th</tag> 
    549     <xvectag>DS-mpf_test/INDEX</xvectag> 
    550     <yvectag>DS-mpf_test/xt_th</yvectag> 
     613    <xvectag>DS-unitstep/INDEX</xvectag> 
     614    <yvectag>DS-unitstep/xt_th</yvectag> 
    551615    <legend></legend> 
    552616    <interp>0</interp> 
     
    561625  </curve> 
    562626  <curve> 
    563     <tag>xtE_ia</tag> 
    564     <xvectag>DS-mpf_test/INDEX</xvectag> 
    565     <yvectag>DS-mpf_test/xtE_ia</yvectag> 
     627    <tag>KF_ia</tag> 
     628    <xvectag>DS-unitstep/INDEX</xvectag> 
     629    <yvectag>DS-unitstep/KF_ia</yvectag> 
    566630    <legend></legend> 
    567631    <interp>0</interp> 
     
    576640  </curve> 
    577641  <curve> 
    578     <tag>xtE_ib</tag> 
    579     <xvectag>DS-mpf_test/INDEX</xvectag> 
    580     <yvectag>DS-mpf_test/xtE_ib</yvectag> 
     642    <tag>KF_ib</tag> 
     643    <xvectag>DS-unitstep/INDEX</xvectag> 
     644    <yvectag>DS-unitstep/KF_ib</yvectag> 
    581645    <legend></legend> 
    582646    <interp>0</interp> 
     
    591655  </curve> 
    592656  <curve> 
    593     <tag>xtE_om</tag> 
    594     <xvectag>DS-mpf_test/INDEX</xvectag> 
    595     <yvectag>DS-mpf_test/xtE_om</yvectag> 
     657    <tag>KF_om</tag> 
     658    <xvectag>DS-unitstep/INDEX</xvectag> 
     659    <yvectag>DS-unitstep/KF_om</yvectag> 
    596660    <legend></legend> 
    597661    <interp>0</interp> 
     
    606670  </curve> 
    607671  <curve> 
    608     <tag>xtE_th</tag> 
    609     <xvectag>DS-mpf_test/INDEX</xvectag> 
    610     <yvectag>DS-mpf_test/xtE_th</yvectag> 
     672    <tag>KF_th</tag> 
     673    <xvectag>DS-unitstep/INDEX</xvectag> 
     674    <yvectag>DS-unitstep/KF_th</yvectag> 
    611675    <legend></legend> 
    612676    <interp>0</interp> 
     
    621685  </curve> 
    622686  <curve> 
    623     <tag>xtM_ia</tag> 
    624     <xvectag>DS-mpf_test/INDEX</xvectag> 
    625     <yvectag>DS-mpf_test/xtM_ia</yvectag> 
     687    <tag>M_ia</tag> 
     688    <xvectag>DS-unitstep/INDEX</xvectag> 
     689    <yvectag>DS-unitstep/M_ia</yvectag> 
    626690    <legend></legend> 
    627691    <interp>0</interp> 
     
    636700  </curve> 
    637701  <curve> 
    638     <tag>xtM_ib</tag> 
    639     <xvectag>DS-mpf_test/INDEX</xvectag> 
    640     <yvectag>DS-mpf_test/xtM_ib</yvectag> 
     702    <tag>M_ib</tag> 
     703    <xvectag>DS-unitstep/INDEX</xvectag> 
     704    <yvectag>DS-unitstep/M_ib</yvectag> 
    641705    <legend></legend> 
    642706    <interp>0</interp> 
     
    651715  </curve> 
    652716  <curve> 
    653     <tag>xtM_om</tag> 
    654     <xvectag>DS-mpf_test/INDEX</xvectag> 
    655     <yvectag>DS-mpf_test/xtM_om</yvectag> 
     717    <tag>M_om</tag> 
     718    <xvectag>DS-unitstep/INDEX</xvectag> 
     719    <yvectag>DS-unitstep/M_om</yvectag> 
    656720    <legend></legend> 
    657721    <interp>0</interp> 
     
    666730  </curve> 
    667731  <curve> 
    668     <tag>xtM_th</tag> 
    669     <xvectag>DS-mpf_test/INDEX</xvectag> 
    670     <yvectag>DS-mpf_test/xtM_th</yvectag> 
     732    <tag>M_th</tag> 
     733    <xvectag>DS-unitstep/INDEX</xvectag> 
     734    <yvectag>DS-unitstep/M_th</yvectag> 
    671735    <legend></legend> 
    672736    <interp>0</interp> 
     
    681745  </curve> 
    682746  <curve> 
    683     <tag>xtM_Q_0</tag> 
    684     <xvectag>DS-mpf_test/INDEX</xvectag> 
    685     <yvectag>DS-mpf_test/xtM_Q_0</yvectag> 
    686     <legend></legend> 
    687     <interp>0</interp> 
    688     <hasMinus/> 
    689     <color>#004040</color> 
    690     <hasLines/> 
    691     <lineWidth>0</lineWidth> 
    692     <lineStyle>0</lineStyle> 
    693     <pointType>0</pointType> 
    694     <pointDensity>0</pointDensity> 
    695     <barStyle>0</barStyle> 
    696   </curve> 
    697   <curve> 
    698     <tag>xtM_Q_1</tag> 
    699     <xvectag>DS-mpf_test/INDEX</xvectag> 
    700     <yvectag>DS-mpf_test/xtM_Q_1</yvectag> 
    701     <legend></legend> 
    702     <interp>0</interp> 
    703     <hasMinus/> 
    704     <color>#008080</color> 
    705     <hasLines/> 
    706     <lineWidth>0</lineWidth> 
    707     <lineStyle>0</lineStyle> 
    708     <pointType>0</pointType> 
    709     <pointDensity>0</pointDensity> 
    710     <barStyle>0</barStyle> 
    711   </curve> 
    712   <curve> 
    713     <tag>xtM_Q_2</tag> 
    714     <xvectag>DS-mpf_test/INDEX</xvectag> 
    715     <yvectag>DS-mpf_test/xtM_Q_2</yvectag> 
    716     <legend></legend> 
    717     <interp>0</interp> 
    718     <hasMinus/> 
    719     <color>#00c0c0</color> 
    720     <hasLines/> 
    721     <lineWidth>0</lineWidth> 
    722     <lineStyle>0</lineStyle> 
    723     <pointType>0</pointType> 
    724     <pointDensity>0</pointDensity> 
    725     <barStyle>0</barStyle> 
    726   </curve> 
    727   <curve> 
    728     <tag>xtM_Q_3</tag> 
    729     <xvectag>DS-mpf_test/INDEX</xvectag> 
    730     <yvectag>DS-mpf_test/xtM_Q_3</yvectag> 
    731     <legend></legend> 
    732     <interp>0</interp> 
    733     <hasMinus/> 
    734     <color>#00ffff</color> 
    735     <hasLines/> 
    736     <lineWidth>0</lineWidth> 
    737     <lineStyle>0</lineStyle> 
    738     <pointType>0</pointType> 
    739     <pointDensity>0</pointDensity> 
    740     <barStyle>0</barStyle> 
    741   </curve> 
    742   <curve> 
    743     <tag>Q_0</tag> 
    744     <xvectag>DS-mpf_test/INDEX</xvectag> 
    745     <yvectag>DS-mpf_test/Q_0</yvectag> 
     747    <tag>M_Q_0</tag> 
     748    <xvectag>DS-unitstep/INDEX</xvectag> 
     749    <yvectag>DS-unitstep/M_Q_0</yvectag> 
    746750    <legend></legend> 
    747751    <interp>0</interp> 
     
    756760  </curve> 
    757761  <curve> 
    758     <tag>Q_1</tag> 
    759     <xvectag>DS-mpf_test/INDEX</xvectag> 
    760     <yvectag>DS-mpf_test/Q_1</yvectag> 
     762    <tag>M_Q_1</tag> 
     763    <xvectag>DS-unitstep/INDEX</xvectag> 
     764    <yvectag>DS-unitstep/M_Q_1</yvectag> 
    761765    <legend></legend> 
    762766    <interp>0</interp> 
     
    771775  </curve> 
    772776  <curve> 
    773     <tag>Q_2</tag> 
    774     <xvectag>DS-mpf_test/INDEX</xvectag> 
    775     <yvectag>DS-mpf_test/Q_2</yvectag> 
     777    <tag>M_Q_2</tag> 
     778    <xvectag>DS-unitstep/INDEX</xvectag> 
     779    <yvectag>DS-unitstep/M_Q_2</yvectag> 
    776780    <legend></legend> 
    777781    <interp>0</interp> 
     
    786790  </curve> 
    787791  <curve> 
    788     <tag>Q_3</tag> 
    789     <xvectag>DS-mpf_test/INDEX</xvectag> 
    790     <yvectag>DS-mpf_test/Q_3</yvectag> 
     792    <tag>M_Q_3</tag> 
     793    <xvectag>DS-unitstep/INDEX</xvectag> 
     794    <yvectag>DS-unitstep/M_Q_3</yvectag> 
    791795    <legend></legend> 
    792796    <interp>0</interp> 
     
    796800    <lineWidth>0</lineWidth> 
    797801    <lineStyle>0</lineStyle> 
     802    <pointType>0</pointType> 
     803    <pointDensity>0</pointDensity> 
     804    <barStyle>0</barStyle> 
     805  </curve> 
     806  <curve> 
     807    <tag>Q_0</tag> 
     808    <xvectag>DS-unitstep/INDEX</xvectag> 
     809    <yvectag>DS-unitstep/Q_0</yvectag> 
     810    <legend></legend> 
     811    <interp>0</interp> 
     812    <hasMinus/> 
     813    <color>#00ff00</color> 
     814    <hasLines/> 
     815    <lineWidth>0</lineWidth> 
     816    <lineStyle>0</lineStyle> 
     817    <pointType>0</pointType> 
     818    <pointDensity>0</pointDensity> 
     819    <barStyle>0</barStyle> 
     820  </curve> 
     821  <curve> 
     822    <tag>Q_1</tag> 
     823    <xvectag>DS-unitstep/INDEX</xvectag> 
     824    <yvectag>DS-unitstep/Q_1</yvectag> 
     825    <legend></legend> 
     826    <interp>0</interp> 
     827    <hasMinus/> 
     828    <color>#000080</color> 
     829    <hasLines/> 
     830    <lineWidth>0</lineWidth> 
     831    <lineStyle>0</lineStyle> 
     832    <pointType>0</pointType> 
     833    <pointDensity>0</pointDensity> 
     834    <barStyle>0</barStyle> 
     835  </curve> 
     836  <curve> 
     837    <tag>Q_2</tag> 
     838    <xvectag>DS-unitstep/INDEX</xvectag> 
     839    <yvectag>DS-unitstep/Q_2</yvectag> 
     840    <legend></legend> 
     841    <interp>0</interp> 
     842    <hasMinus/> 
     843    <color>#0000c0</color> 
     844    <hasLines/> 
     845    <lineWidth>0</lineWidth> 
     846    <lineStyle>0</lineStyle> 
     847    <pointType>0</pointType> 
     848    <pointDensity>0</pointDensity> 
     849    <barStyle>0</barStyle> 
     850  </curve> 
     851  <curve> 
     852    <tag>Q_3</tag> 
     853    <xvectag>DS-unitstep/INDEX</xvectag> 
     854    <yvectag>DS-unitstep/Q_3</yvectag> 
     855    <legend></legend> 
     856    <interp>0</interp> 
     857    <hasMinus/> 
     858    <color>#0000ff</color> 
     859    <hasLines/> 
     860    <lineWidth>0</lineWidth> 
     861    <lineStyle>0</lineStyle> 
     862    <pointType>0</pointType> 
     863    <pointDensity>0</pointDensity> 
     864    <barStyle>0</barStyle> 
     865  </curve> 
     866  <curve> 
     867    <tag>M_ub_Q_0</tag> 
     868    <xvectag>DS-unitstep/INDEX</xvectag> 
     869    <yvectag>DS-unitstep/M_ub_Q_0</yvectag> 
     870    <legend></legend> 
     871    <interp>0</interp> 
     872    <hasMinus/> 
     873    <color>#404000</color> 
     874    <hasLines/> 
     875    <lineWidth>0</lineWidth> 
     876    <lineStyle>2</lineStyle> 
     877    <pointType>0</pointType> 
     878    <pointDensity>0</pointDensity> 
     879    <barStyle>0</barStyle> 
     880  </curve> 
     881  <curve> 
     882    <tag>M_ub_Q_1</tag> 
     883    <xvectag>DS-unitstep/INDEX</xvectag> 
     884    <yvectag>DS-unitstep/M_ub_Q_1</yvectag> 
     885    <legend></legend> 
     886    <interp>0</interp> 
     887    <hasMinus/> 
     888    <color>#808000</color> 
     889    <hasLines/> 
     890    <lineWidth>0</lineWidth> 
     891    <lineStyle>2</lineStyle> 
     892    <pointType>0</pointType> 
     893    <pointDensity>0</pointDensity> 
     894    <barStyle>0</barStyle> 
     895  </curve> 
     896  <curve> 
     897    <tag>M_ub_Q_2</tag> 
     898    <xvectag>DS-unitstep/INDEX</xvectag> 
     899    <yvectag>DS-unitstep/M_ub_Q_2</yvectag> 
     900    <legend></legend> 
     901    <interp>0</interp> 
     902    <hasMinus/> 
     903    <color>#c0c000</color> 
     904    <hasLines/> 
     905    <lineWidth>0</lineWidth> 
     906    <lineStyle>2</lineStyle> 
     907    <pointType>0</pointType> 
     908    <pointDensity>0</pointDensity> 
     909    <barStyle>0</barStyle> 
     910  </curve> 
     911  <curve> 
     912    <tag>M_ub_Q_3</tag> 
     913    <xvectag>DS-unitstep/INDEX</xvectag> 
     914    <yvectag>DS-unitstep/M_ub_Q_3</yvectag> 
     915    <legend></legend> 
     916    <interp>0</interp> 
     917    <hasMinus/> 
     918    <color>#ffff00</color> 
     919    <hasLines/> 
     920    <lineWidth>0</lineWidth> 
     921    <lineStyle>2</lineStyle> 
     922    <pointType>0</pointType> 
     923    <pointDensity>0</pointDensity> 
     924    <barStyle>0</barStyle> 
     925  </curve> 
     926  <curve> 
     927    <tag>M_lb_Q_0</tag> 
     928    <xvectag>DS-unitstep/INDEX</xvectag> 
     929    <yvectag>DS-unitstep/M_lb_Q_0</yvectag> 
     930    <legend></legend> 
     931    <interp>0</interp> 
     932    <hasMinus/> 
     933    <color>#004040</color> 
     934    <hasLines/> 
     935    <lineWidth>0</lineWidth> 
     936    <lineStyle>2</lineStyle> 
     937    <pointType>0</pointType> 
     938    <pointDensity>0</pointDensity> 
     939    <barStyle>0</barStyle> 
     940  </curve> 
     941  <curve> 
     942    <tag>M_lb_Q_1</tag> 
     943    <xvectag>DS-unitstep/INDEX</xvectag> 
     944    <yvectag>DS-unitstep/M_lb_Q_1</yvectag> 
     945    <legend></legend> 
     946    <interp>0</interp> 
     947    <hasMinus/> 
     948    <color>#008080</color> 
     949    <hasLines/> 
     950    <lineWidth>0</lineWidth> 
     951    <lineStyle>2</lineStyle> 
     952    <pointType>0</pointType> 
     953    <pointDensity>0</pointDensity> 
     954    <barStyle>0</barStyle> 
     955  </curve> 
     956  <curve> 
     957    <tag>M_lb_Q_2</tag> 
     958    <xvectag>DS-unitstep/INDEX</xvectag> 
     959    <yvectag>DS-unitstep/M_lb_Q_2</yvectag> 
     960    <legend></legend> 
     961    <interp>0</interp> 
     962    <hasMinus/> 
     963    <color>#00c0c0</color> 
     964    <hasLines/> 
     965    <lineWidth>0</lineWidth> 
     966    <lineStyle>2</lineStyle> 
     967    <pointType>0</pointType> 
     968    <pointDensity>0</pointDensity> 
     969    <barStyle>0</barStyle> 
     970  </curve> 
     971  <curve> 
     972    <tag>M_lb_Q_3</tag> 
     973    <xvectag>DS-unitstep/INDEX</xvectag> 
     974    <yvectag>DS-unitstep/M_lb_Q_3</yvectag> 
     975    <legend></legend> 
     976    <interp>0</interp> 
     977    <hasMinus/> 
     978    <color>#00ffff</color> 
     979    <hasLines/> 
     980    <lineWidth>0</lineWidth> 
     981    <lineStyle>2</lineStyle> 
    798982    <pointType>0</pointType> 
    799983    <pointDensity>0</pointDensity> 
     
    812996    <margin>0</margin> 
    813997    <padding>0</padding> 
    814     <xscalemode>0</xscalemode> 
    815     <yscalemode>5</yscalemode> 
     998    <xscalemode>2</xscalemode> 
     999    <yscalemode>2</yscalemode> 
    8161000    <xscalemodedefault>0</xscalemodedefault> 
    8171001    <yscalemodedefault>5</yscalemodedefault> 
    818     <xmin>0</xmin> 
    819     <xmax>8996</xmax> 
    820     <ymin>-4.5157036326817</ymin> 
    821     <ymax>7.1059942008359</ymax> 
     1002    <xmin>2926.358392435</xmin> 
     1003    <xmax>3606.906855792</xmax> 
     1004    <ymin>-0.048334607484026</ymin> 
     1005    <ymax>0.51400228173259</ymax> 
    8221006    <xreversed>0</xreversed> 
    8231007    <yreversed>0</yreversed> 
     
    8451029    </ylabel> 
    8461030    <xticklabel> 
    847       <text>8000</text> 
     1031      <text>3600</text> 
    8481032      <interpret/> 
    8491033      <rotation>0</rotation> 
     
    8521036    </xticklabel> 
    8531037    <yticklabel> 
    854       <text>6</text> 
     1038      <text>0.5</text> 
    8551039      <interpret/> 
    8561040      <rotation>0</rotation> 
     
    9231107    <margin>0</margin> 
    9241108    <padding>0</padding> 
    925     <xscalemode>0</xscalemode> 
    926     <yscalemode>5</yscalemode> 
     1109    <xscalemode>2</xscalemode> 
     1110    <yscalemode>2</yscalemode> 
    9271111    <xscalemodedefault>0</xscalemodedefault> 
    9281112    <yscalemodedefault>5</yscalemodedefault> 
    929     <xmin>0</xmin> 
    930     <xmax>8996</xmax> 
    931     <ymin>-8.7889029972173</ymin> 
    932     <ymax>2.9406777090262</ymax> 
     1113    <xmin>2926.358392435</xmin> 
     1114    <xmax>3606.906855792</xmax> 
     1115    <ymin>-0.39028880388336</ymin> 
     1116    <ymax>0.28756055295362</ymax> 
    9331117    <xreversed>0</xreversed> 
    9341118    <yreversed>0</yreversed> 
     
    9561140    </ylabel> 
    9571141    <xticklabel> 
    958       <text>8000</text> 
     1142      <text>3600</text> 
    9591143      <interpret/> 
    9601144      <rotation>0</rotation> 
     
    9631147    </xticklabel> 
    9641148    <yticklabel> 
    965       <text>2</text> 
     1149      <text>0.2</text> 
    9661150      <interpret/> 
    9671151      <rotation>0</rotation> 
     
    10341218    <margin>0</margin> 
    10351219    <padding>0</padding> 
    1036     <xscalemode>0</xscalemode> 
    1037     <yscalemode>5</yscalemode> 
     1220    <xscalemode>2</xscalemode> 
     1221    <yscalemode>2</yscalemode> 
    10381222    <xscalemodedefault>0</xscalemodedefault> 
    10391223    <yscalemodedefault>5</yscalemodedefault> 
    1040     <xmin>0</xmin> 
    1041     <xmax>8996</xmax> 
    1042     <ymin>-9.9507440023583</ymin> 
    1043     <ymax>10.112057855496</ymax> 
     1224    <xmin>2926.358392435</xmin> 
     1225    <xmax>3606.906855792</xmax> 
     1226    <ymin>2.9364401415802</ymin> 
     1227    <ymax>6.8935369383091</ymax> 
    10441228    <xreversed>0</xreversed> 
    10451229    <yreversed>0</yreversed> 
     
    10671251    </ylabel> 
    10681252    <xticklabel> 
    1069       <text>8000</text> 
     1253      <text>3600</text> 
    10701254      <interpret/> 
    10711255      <rotation>0</rotation> 
     
    10741258    </xticklabel> 
    10751259    <yticklabel> 
    1076       <text>10</text> 
     1260      <text>6</text> 
    10771261      <interpret/> 
    10781262      <rotation>0</rotation> 
     
    11451329    <margin>0</margin> 
    11461330    <padding>0</padding> 
    1147     <xscalemode>0</xscalemode> 
    1148     <yscalemode>5</yscalemode> 
     1331    <xscalemode>2</xscalemode> 
     1332    <yscalemode>2</yscalemode> 
    11491333    <xscalemodedefault>0</xscalemodedefault> 
    11501334    <yscalemodedefault>5</yscalemodedefault> 
    1151     <xmin>0</xmin> 
    1152     <xmax>8996</xmax> 
    1153     <ymin>-3.2349482477224</ymin> 
    1154     <ymax>1.950493542042</ymax> 
     1335    <xmin>2926.358392435</xmin> 
     1336    <xmax>3606.906855792</xmax> 
     1337    <ymin>1.3025848670891</ymin> 
     1338    <ymax>1.8398220026564</ymax> 
    11551339    <xreversed>0</xreversed> 
    11561340    <yreversed>0</yreversed> 
     
    11781362    </ylabel> 
    11791363    <xticklabel> 
    1180       <text>8000</text> 
     1364      <text>3600</text> 
    11811365      <interpret/> 
    11821366      <rotation>0</rotation> 
     
    11851369    </xticklabel> 
    11861370    <yticklabel> 
    1187       <text>1</text> 
     1371      <text>1.8</text> 
    11881372      <interpret/> 
    11891373      <rotation>0</rotation> 
     
    12561440    <margin>0</margin> 
    12571441    <padding>0</padding> 
    1258     <xscalemode>0</xscalemode> 
    1259     <yscalemode>5</yscalemode> 
     1442    <xscalemode>2</xscalemode> 
     1443    <yscalemode>2</yscalemode> 
    12601444    <xscalemodedefault>0</xscalemodedefault> 
    12611445    <yscalemodedefault>5</yscalemodedefault> 
    1262     <xmin>0</xmin> 
    1263     <xmax>8996</xmax> 
    1264     <ymin>-4.5157024034826</ymin> 
    1265     <ymax>7.1060502918641</ymax> 
     1446    <xmin>2926.358392435</xmin> 
     1447    <xmax>3606.906855792</xmax> 
     1448    <ymin>-0.04833941248617</ymin> 
     1449    <ymax>0.51402942484196</ymax> 
    12661450    <xreversed>0</xreversed> 
    12671451    <yreversed>0</yreversed> 
     
    12821466    </xlabel> 
    12831467    <ylabel> 
    1284       <text>xtE\_ia</text> 
     1468      <text>KF\_ia</text> 
    12851469      <interpret/> 
    12861470      <rotation>270</rotation> 
     
    12891473    </ylabel> 
    12901474    <xticklabel> 
    1291       <text>8000</text> 
     1475      <text>3600</text> 
    12921476      <interpret/> 
    12931477      <rotation>0</rotation> 
     
    12961480    </xticklabel> 
    12971481    <yticklabel> 
    1298       <text>6</text> 
     1482      <text>0.5</text> 
    12991483      <interpret/> 
    13001484      <rotation>0</rotation> 
     
    13111495    <xlogbase>10</xlogbase> 
    13121496    <ylogbase>10</ylogbase> 
    1313     <curvetag>xtE_ia</curvetag> 
     1497    <curvetag>KF_ia</curvetag> 
    13141498    <xmajorgrid>0</xmajorgrid> 
    13151499    <ymajorgrid>0</ymajorgrid> 
     
    13671551    <margin>0</margin> 
    13681552    <padding>0</padding> 
    1369     <xscalemode>0</xscalemode> 
    1370     <yscalemode>5</yscalemode> 
     1553    <xscalemode>2</xscalemode> 
     1554    <yscalemode>2</yscalemode> 
    13711555    <xscalemodedefault>0</xscalemodedefault> 
    13721556    <yscalemodedefault>5</yscalemodedefault> 
    1373     <xmin>0</xmin> 
    1374     <xmax>8996</xmax> 
    1375     <ymin>-8.7889142376003</ymin> 
    1376     <ymax>2.940623098786</ymax> 
     1557    <xmin>2926.358392435</xmin> 
     1558    <xmax>3606.906855792</xmax> 
     1559    <ymin>-0.3902866183156</ymin> 
     1560    <ymax>0.2875552509328</ymax> 
    13771561    <xreversed>0</xreversed> 
    13781562    <yreversed>0</yreversed> 
     
    13931577    </xlabel> 
    13941578    <ylabel> 
    1395       <text>xtE\_ib</text> 
     1579      <text>KF\_ib</text> 
    13961580      <interpret/> 
    13971581      <rotation>270</rotation> 
     
    14001584    </ylabel> 
    14011585    <xticklabel> 
    1402       <text>8000</text> 
     1586      <text>3600</text> 
    14031587      <interpret/> 
    14041588      <rotation>0</rotation> 
     
    14071591    </xticklabel> 
    14081592    <yticklabel> 
    1409       <text>2</text> 
     1593      <text>0.2</text> 
    14101594      <interpret/> 
    14111595      <rotation>0</rotation> 
     
    14221606    <xlogbase>10</xlogbase> 
    14231607    <ylogbase>10</ylogbase> 
    1424     <curvetag>xtE_ib</curvetag> 
     1608    <curvetag>KF_ib</curvetag> 
    14251609    <xmajorgrid>0</xmajorgrid> 
    14261610    <ymajorgrid>0</ymajorgrid> 
     
    14781662    <margin>0</margin> 
    14791663    <padding>0</padding> 
    1480     <xscalemode>0</xscalemode> 
    1481     <yscalemode>5</yscalemode> 
     1664    <xscalemode>2</xscalemode> 
     1665    <yscalemode>2</yscalemode> 
    14821666    <xscalemodedefault>0</xscalemodedefault> 
    14831667    <yscalemodedefault>5</yscalemodedefault> 
    1484     <xmin>0</xmin> 
    1485     <xmax>8996</xmax> 
    1486     <ymin>-9.9423377081818</ymin> 
    1487     <ymax>10.167729809906</ymax> 
     1668    <xmin>2926.358392435</xmin> 
     1669    <xmax>3606.906855792</xmax> 
     1670    <ymin>2.8955198144056</ymin> 
     1671    <ymax>6.8845837989307</ymax> 
    14881672    <xreversed>0</xreversed> 
    14891673    <yreversed>0</yreversed> 
     
    15041688    </xlabel> 
    15051689    <ylabel> 
    1506       <text>xtE\_om</text> 
     1690      <text>KF\_om</text> 
    15071691      <interpret/> 
    15081692      <rotation>270</rotation> 
     
    15111695    </ylabel> 
    15121696    <xticklabel> 
    1513       <text>8000</text> 
     1697      <text>3600</text> 
    15141698      <interpret/> 
    15151699      <rotation>0</rotation> 
     
    15181702    </xticklabel> 
    15191703    <yticklabel> 
    1520       <text>10</text> 
     1704      <text>6</text> 
    15211705      <interpret/> 
    15221706      <rotation>0</rotation> 
     
    15331717    <xlogbase>10</xlogbase> 
    15341718    <ylogbase>10</ylogbase> 
    1535     <curvetag>xtE_om</curvetag> 
     1719    <curvetag>KF_om</curvetag> 
    15361720    <xmajorgrid>0</xmajorgrid> 
    15371721    <ymajorgrid>0</ymajorgrid> 
     
    15891773    <margin>0</margin> 
    15901774    <padding>0</padding> 
    1591     <xscalemode>0</xscalemode> 
    1592     <yscalemode>5</yscalemode> 
     1775    <xscalemode>2</xscalemode> 
     1776    <yscalemode>2</yscalemode> 
    15931777    <xscalemodedefault>0</xscalemodedefault> 
    15941778    <yscalemodedefault>5</yscalemodedefault> 
    1595     <xmin>0</xmin> 
    1596     <xmax>8996</xmax> 
    1597     <ymin>-3.1990055876149</ymin> 
    1598     <ymax>2.0317543342644</ymax> 
     1779    <xmin>2926.358392435</xmin> 
     1780    <xmax>3606.906855792</xmax> 
     1781    <ymin>1.3045812312785</ymin> 
     1782    <ymax>1.9219107533158</ymax> 
    15991783    <xreversed>0</xreversed> 
    16001784    <yreversed>0</yreversed> 
     
    16151799    </xlabel> 
    16161800    <ylabel> 
    1617       <text>xtE\_th</text> 
     1801      <text>KF\_th</text> 
    16181802      <interpret/> 
    16191803      <rotation>270</rotation> 
     
    16221806    </ylabel> 
    16231807    <xticklabel> 
    1624       <text>8000</text> 
     1808      <text>3600</text> 
    16251809      <interpret/> 
    16261810      <rotation>0</rotation> 
     
    16291813    </xticklabel> 
    16301814    <yticklabel> 
    1631       <text>2</text> 
     1815      <text>1.9</text> 
    16321816      <interpret/> 
    16331817      <rotation>0</rotation> 
     
    16441828    <xlogbase>10</xlogbase> 
    16451829    <ylogbase>10</ylogbase> 
    1646     <curvetag>xtE_th</curvetag> 
     1830    <curvetag>KF_th</curvetag> 
    16471831    <xmajorgrid>0</xmajorgrid> 
    16481832    <ymajorgrid>0</ymajorgrid> 
     
    17001884    <margin>0</margin> 
    17011885    <padding>0</padding> 
    1702     <xscalemode>0</xscalemode> 
    1703     <yscalemode>5</yscalemode> 
     1886    <xscalemode>2</xscalemode> 
     1887    <yscalemode>2</yscalemode> 
    17041888    <xscalemodedefault>0</xscalemodedefault> 
    17051889    <yscalemodedefault>5</yscalemodedefault> 
    1706     <xmin>0</xmin> 
    1707     <xmax>8996</xmax> 
    1708     <ymin>-4.5157373665507</ymin> 
    1709     <ymax>7.1060009663093</ymax> 
     1890    <xmin>2926.358392435</xmin> 
     1891    <xmax>3606.906855792</xmax> 
     1892    <ymin>-0.048337870582494</ymin> 
     1893    <ymax>0.51406761152853</ymax> 
    17101894    <xreversed>0</xreversed> 
    17111895    <yreversed>0</yreversed> 
     
    17261910    </xlabel> 
    17271911    <ylabel> 
    1728       <text>xtM\_ia</text> 
     1912      <text>M\_ia</text> 
    17291913      <interpret/> 
    17301914      <rotation>270</rotation> 
     
    17331917    </ylabel> 
    17341918    <xticklabel> 
    1735       <text>8000</text> 
     1919      <text>3600</text> 
    17361920      <interpret/> 
    17371921      <rotation>0</rotation> 
     
    17401924    </xticklabel> 
    17411925    <yticklabel> 
    1742       <text>6</text> 
     1926      <text>0.5</text> 
    17431927      <interpret/> 
    17441928      <rotation>0</rotation> 
     
    17551939    <xlogbase>10</xlogbase> 
    17561940    <ylogbase>10</ylogbase> 
    1757     <curvetag>xtM_ia</curvetag> 
     1941    <curvetag>M_ia</curvetag> 
    17581942    <xmajorgrid>0</xmajorgrid> 
    17591943    <ymajorgrid>0</ymajorgrid> 
     
    18111995    <margin>0</margin> 
    18121996    <padding>0</padding> 
    1813     <xscalemode>0</xscalemode> 
    1814     <yscalemode>5</yscalemode> 
     1997    <xscalemode>2</xscalemode> 
     1998    <yscalemode>2</yscalemode> 
    18151999    <xscalemodedefault>0</xscalemodedefault> 
    18162000    <yscalemodedefault>5</yscalemodedefault> 
    1817     <xmin>0</xmin> 
    1818     <xmax>8996</xmax> 
    1819     <ymin>-8.7889175939615</ymin> 
    1820     <ymax>2.9407047630982</ymax> 
     2001    <xmin>2926.358392435</xmin> 
     2002    <xmax>3606.906855792</xmax> 
     2003    <ymin>-0.39028810807047</ymin> 
     2004    <ymax>0.28761404165682</ymax> 
    18212005    <xreversed>0</xreversed> 
    18222006    <yreversed>0</yreversed> 
     
    18372021    </xlabel> 
    18382022    <ylabel> 
    1839       <text>xtM\_ib</text> 
     2023      <text>M\_ib</text> 
    18402024      <interpret/> 
    18412025      <rotation>270</rotation> 
     
    18442028    </ylabel> 
    18452029    <xticklabel> 
    1846       <text>8000</text> 
     2030      <text>3600</text> 
    18472031      <interpret/> 
    18482032      <rotation>0</rotation> 
     
    18512035    </xticklabel> 
    18522036    <yticklabel> 
    1853       <text>2</text> 
     2037      <text>0.2</text> 
    18542038      <interpret/> 
    18552039      <rotation>0</rotation> 
     
    18662050    <xlogbase>10</xlogbase> 
    18672051    <ylogbase>10</ylogbase> 
    1868     <curvetag>xtM_ib</curvetag> 
     2052    <curvetag>M_ib</curvetag> 
    18692053    <xmajorgrid>0</xmajorgrid> 
    18702054    <ymajorgrid>0</ymajorgrid> 
     
    19222106    <margin>0</margin> 
    19232107    <padding>0</padding> 
    1924     <xscalemode>0</xscalemode> 
    1925     <yscalemode>5</yscalemode> 
     2108    <xscalemode>2</xscalemode> 
     2109    <yscalemode>2</yscalemode> 
    19262110    <xscalemodedefault>0</xscalemodedefault> 
    19272111    <yscalemodedefault>5</yscalemodedefault> 
    1928     <xmin>0</xmin> 
    1929     <xmax>8996</xmax> 
    1930     <ymin>-9.9423985713648</ymin> 
    1931     <ymax>10.156071405218</ymax> 
     2112    <xmin>2926.358392435</xmin> 
     2113    <xmax>3606.906855792</xmax> 
     2114    <ymin>2.9290394221155</ymin> 
     2115    <ymax>6.8868281881701</ymax> 
    19322116    <xreversed>0</xreversed> 
    19332117    <yreversed>0</yreversed> 
     
    19482132    </xlabel> 
    19492133    <ylabel> 
    1950       <text>xtM\_om</text> 
     2134      <text>M\_om</text> 
    19512135      <interpret/> 
    19522136      <rotation>270</rotation> 
     
    19552139    </ylabel> 
    19562140    <xticklabel> 
    1957       <text>8000</text> 
     2141      <text>3600</text> 
    19582142      <interpret/> 
    19592143      <rotation>0</rotation> 
     
    19622146    </xticklabel> 
    19632147    <yticklabel> 
    1964       <text>10</text> 
     2148      <text>6</text> 
    19652149      <interpret/> 
    19662150      <rotation>0</rotation> 
     
    19772161    <xlogbase>10</xlogbase> 
    19782162    <ylogbase>10</ylogbase> 
    1979     <curvetag>xtM_om</curvetag> 
     2163    <curvetag>M_om</curvetag> 
    19802164    <xmajorgrid>0</xmajorgrid> 
    19812165    <ymajorgrid>0</ymajorgrid> 
     
    20332217    <margin>0</margin> 
    20342218    <padding>0</padding> 
    2035     <xscalemode>0</xscalemode> 
    2036     <yscalemode>5</yscalemode> 
     2219    <xscalemode>2</xscalemode> 
     2220    <yscalemode>2</yscalemode> 
    20372221    <xscalemodedefault>0</xscalemodedefault> 
    20382222    <yscalemodedefault>5</yscalemodedefault> 
    2039     <xmin>0</xmin> 
    2040     <xmax>8996</xmax> 
    2041     <ymin>-3.2332263813866</ymin> 
    2042     <ymax>1.9992572404254</ymax> 
     2223    <xmin>2926.358392435</xmin> 
     2224    <xmax>3606.906855792</xmax> 
     2225    <ymin>1.3064345453176</ymin> 
     2226    <ymax>1.8885338031887</ymax> 
    20432227    <xreversed>0</xreversed> 
    20442228    <yreversed>0</yreversed> 
     
    20592243    </xlabel> 
    20602244    <ylabel> 
    2061       <text>xtM\_th</text> 
     2245      <text>M\_th</text> 
    20622246      <interpret/> 
    20632247      <rotation>270</rotation> 
     
    20662250    </ylabel> 
    20672251    <xticklabel> 
    2068       <text>8000</text> 
     2252      <text>3600</text> 
    20692253      <interpret/> 
    20702254      <rotation>0</rotation> 
     
    20732257    </xticklabel> 
    20742258    <yticklabel> 
    2075       <text>1</text> 
     2259      <text>1.8</text> 
    20762260      <interpret/> 
    20772261      <rotation>0</rotation> 
     
    20882272    <xlogbase>10</xlogbase> 
    20892273    <ylogbase>10</ylogbase> 
    2090     <curvetag>xtM_th</curvetag> 
     2274    <curvetag>M_th</curvetag> 
    20912275    <xmajorgrid>0</xmajorgrid> 
    20922276    <ymajorgrid>0</ymajorgrid> 
     
    21442328    <margin>0</margin> 
    21452329    <padding>0</padding> 
    2146     <xscalemode>0</xscalemode> 
    2147     <yscalemode>5</yscalemode> 
     2330    <xscalemode>2</xscalemode> 
     2331    <yscalemode>2</yscalemode> 
    21482332    <xscalemodedefault>0</xscalemodedefault> 
    21492333    <yscalemodedefault>5</yscalemodedefault> 
    2150     <xmin>0</xmin> 
    2151     <xmax>8996</xmax> 
    2152     <ymin>-2.4976711470358e-07</ymin> 
    2153     <ymax>2.093709004069e-05</ymax> 
     2334    <xmin>2926.358392435</xmin> 
     2335    <xmax>3606.906855792</xmax> 
     2336    <ymin>-5.1884392049895e-08</ymin> 
     2337    <ymax>7.396627640389e-06</ymax> 
    21542338    <xreversed>0</xreversed> 
    21552339    <yreversed>0</yreversed> 
     
    21702354    </xlabel> 
    21712355    <ylabel> 
    2172       <text>xtM\_Q\_0 and Q\_0</text> 
     2356      <text></text> 
    21732357      <interpret/> 
    21742358      <rotation>270</rotation> 
     
    21772361    </ylabel> 
    21782362    <xticklabel> 
    2179       <text>8000</text> 
     2363      <text>3600</text> 
    21802364      <interpret/> 
    21812365      <rotation>0</rotation> 
     
    21842368    </xticklabel> 
    21852369    <yticklabel> 
    2186       <text>2e-05</text> 
     2370      <text>7e-06</text> 
    21872371      <interpret/> 
    21882372      <rotation>0</rotation> 
     
    21992383    <xlogbase>10</xlogbase> 
    22002384    <ylogbase>10</ylogbase> 
    2201     <curvetag>xtM_Q_0</curvetag> 
     2385    <curvetag>M_Q_0</curvetag> 
    22022386    <curvetag>Q_0</curvetag> 
     2387    <curvetag>M_ub_Q_0</curvetag> 
     2388    <curvetag>M_lb_Q_0</curvetag> 
    22032389    <xmajorgrid>0</xmajorgrid> 
    22042390    <ymajorgrid>0</ymajorgrid> 
     
    22562442    <margin>0</margin> 
    22572443    <padding>0</padding> 
    2258     <xscalemode>0</xscalemode> 
    2259     <yscalemode>5</yscalemode> 
     2444    <xscalemode>2</xscalemode> 
     2445    <yscalemode>2</yscalemode> 
    22602446    <xscalemodedefault>0</xscalemodedefault> 
    22612447    <yscalemodedefault>5</yscalemodedefault> 
    2262     <xmin>0</xmin> 
    2263     <xmax>8996</xmax> 
    2264     <ymin>-5.4365964898493e-07</ymin> 
    2265     <ymax>3.2021199309101e-05</ymax> 
     2448    <xmin>2926.358392435</xmin> 
     2449    <xmax>3606.906855792</xmax> 
     2450    <ymin>-2.4282594344782e-06</ymin> 
     2451    <ymax>0.00010541853909026</ymax> 
    22662452    <xreversed>0</xreversed> 
    22672453    <yreversed>0</yreversed> 
     
    22822468    </xlabel> 
    22832469    <ylabel> 
    2284       <text>xtM\_Q\_1 and Q\_1</text> 
     2470      <text></text> 
    22852471      <interpret/> 
    22862472      <rotation>270</rotation> 
     
    22892475    </ylabel> 
    22902476    <xticklabel> 
    2291       <text>8000</text> 
     2477      <text>3600</text> 
    22922478      <interpret/> 
    22932479      <rotation>0</rotation> 
     
    22962482    </xticklabel> 
    22972483    <yticklabel> 
    2298       <text>3e-05</text> 
     2484      <text>0.0001</text> 
    22992485      <interpret/> 
    23002486      <rotation>0</rotation> 
     
    23112497    <xlogbase>10</xlogbase> 
    23122498    <ylogbase>10</ylogbase> 
    2313     <curvetag>xtM_Q_1</curvetag> 
     2499    <curvetag>M_Q_1</curvetag> 
    23142500    <curvetag>Q_1</curvetag> 
     2501    <curvetag>M_ub_Q_1</curvetag> 
     2502    <curvetag>M_lb_Q_1</curvetag> 
    23152503    <xmajorgrid>0</xmajorgrid> 
    23162504    <ymajorgrid>0</ymajorgrid> 
     
    23682556    <margin>0</margin> 
    23692557    <padding>0</padding> 
    2370     <xscalemode>0</xscalemode> 
    2371     <yscalemode>5</yscalemode> 
     2558    <xscalemode>2</xscalemode> 
     2559    <yscalemode>2</yscalemode> 
    23722560    <xscalemodedefault>0</xscalemodedefault> 
    23732561    <yscalemodedefault>5</yscalemodedefault> 
    2374     <xmin>0</xmin> 
    2375     <xmax>8996</xmax> 
    2376     <ymin>-0.00037357938771325</ymin> 
    2377     <ymax>0.01812882974232</ymax> 
     2562    <xmin>2926.358392435</xmin> 
     2563    <xmax>3606.906855792</xmax> 
     2564    <ymin>-0.00017880685614156</ymin> 
     2565    <ymax>0.0107775025083</ymax> 
    23782566    <xreversed>0</xreversed> 
    23792567    <yreversed>0</yreversed> 
     
    23942582    </xlabel> 
    23952583    <ylabel> 
    2396       <text>xtM\_Q\_2 and Q\_2</text> 
     2584      <text></text> 
    23972585      <interpret/> 
    23982586      <rotation>270</rotation> 
     
    24012589    </ylabel> 
    24022590    <xticklabel> 
    2403       <text>8000</text> 
     2591      <text>3600</text> 
    24042592      <interpret/> 
    24052593      <rotation>0</rotation> 
     
    24082596    </xticklabel> 
    24092597    <yticklabel> 
    2410       <text>0.018</text> 
     2598      <text>0.01</text> 
    24112599      <interpret/> 
    24122600      <rotation>0</rotation> 
     
    24232611    <xlogbase>10</xlogbase> 
    24242612    <ylogbase>10</ylogbase> 
    2425     <curvetag>xtM_Q_2</curvetag> 
     2613    <curvetag>M_Q_2</curvetag> 
    24262614    <curvetag>Q_2</curvetag> 
     2615    <curvetag>M_ub_Q_2</curvetag> 
     2616    <curvetag>M_lb_Q_2</curvetag> 
    24272617    <xmajorgrid>0</xmajorgrid> 
    24282618    <ymajorgrid>0</ymajorgrid> 
     
    24802670    <margin>0</margin> 
    24812671    <padding>0</padding> 
    2482     <xscalemode>0</xscalemode> 
    2483     <yscalemode>5</yscalemode> 
     2672    <xscalemode>2</xscalemode> 
     2673    <yscalemode>2</yscalemode> 
    24842674    <xscalemodedefault>0</xscalemodedefault> 
    24852675    <yscalemodedefault>5</yscalemodedefault> 
    2486     <xmin>0</xmin> 
    2487     <xmax>8996</xmax> 
    2488     <ymin>-0.00015311709117417</ymin> 
    2489     <ymax>0.0066825740776078</ymax> 
     2676    <xmin>2926.358392435</xmin> 
     2677    <xmax>3606.906855792</xmax> 
     2678    <ymin>-2.8901098199394e-05</ymin> 
     2679    <ymax>0.0013375207853002</ymax> 
    24902680    <xreversed>0</xreversed> 
    24912681    <yreversed>0</yreversed> 
     
    25062696    </xlabel> 
    25072697    <ylabel> 
    2508       <text>xtM\_Q\_3 and Q\_3</text> 
     2698      <text></text> 
    25092699      <interpret/> 
    25102700      <rotation>270</rotation> 
     
    25132703    </ylabel> 
    25142704    <xticklabel> 
    2515       <text>8000</text> 
     2705      <text>3600</text> 
    25162706      <interpret/> 
    25172707      <rotation>0</rotation> 
     
    25202710    </xticklabel> 
    25212711    <yticklabel> 
    2522       <text>0.006</text> 
     2712      <text>0.0012</text> 
    25232713      <interpret/> 
    25242714      <rotation>0</rotation> 
     
    25352725    <xlogbase>10</xlogbase> 
    25362726    <ylogbase>10</ylogbase> 
    2537     <curvetag>xtM_Q_3</curvetag> 
     2727    <curvetag>M_Q_3</curvetag> 
    25382728    <curvetag>Q_3</curvetag> 
     2729    <curvetag>M_ub_Q_3</curvetag> 
     2730    <curvetag>M_lb_Q_3</curvetag> 
    25392731    <xmajorgrid>0</xmajorgrid> 
    25402732    <ymajorgrid>0</ymajorgrid> 
     
    25822774  <window> 
    25832775    <tag>W1</tag> 
    2584     <restore x="4" y="4" w="1008" h="532" /> 
    2585     <internal x="4" y="4" w="1008" h="532" /> 
     2776    <restore x="4" y="4" w="1008" h="556" /> 
     2777    <internal x="4" y="4" w="1008" h="556" /> 
    25862778    <columns>4</columns> 
    25872779    <name>W1</name> 
     
    26362828        <border color="#000000" width="2" padding="0" margin="0" /> 
    26372829        <border color="#000000" width="2" padding="0" margin="0" /> 
    2638         <tag>Object 440</tag> 
     2830        <tag>Object 561</tag> 
    26392831        <aspect x="0.1" y="0.1" w="0.2" h="0.1" /> 
    26402832        <idealsize w="1" h="1" /> 
     
    26532845        <vertical>true</vertical> 
    26542846        <title></title> 
    2655         <curvetag>xtM_Q_0</curvetag> 
     2847        <curvetag>M_Q_0</curvetag> 
    26562848        <curvetag>Q_0</curvetag> 
     2849        <curvetag>M_ub_Q_0</curvetag> 
     2850        <curvetag>M_lb_Q_0</curvetag> 
    26572851      </Legend> 
    26582852    </Plot> 
     
    26622856        <border color="#000000" width="2" padding="0" margin="0" /> 
    26632857        <border color="#000000" width="2" padding="0" margin="0" /> 
    2664         <tag>Object 441</tag> 
     2858        <tag>Object 562</tag> 
    26652859        <aspect x="0.1" y="0.1" w="0.2" h="0.1" /> 
    26662860        <idealsize w="1" h="1" /> 
     
    26792873        <vertical>true</vertical> 
    26802874        <title></title> 
    2681         <curvetag>xtM_Q_1</curvetag> 
     2875        <curvetag>M_Q_1</curvetag> 
    26822876        <curvetag>Q_1</curvetag> 
     2877        <curvetag>M_ub_Q_1</curvetag> 
     2878        <curvetag>M_lb_Q_1</curvetag> 
    26832879      </Legend> 
    26842880    </Plot> 
     
    26882884        <border color="#000000" width="2" padding="0" margin="0" /> 
    26892885        <border color="#000000" width="2" padding="0" margin="0" /> 
    2690         <tag>Object 442</tag> 
     2886        <tag>Object 563</tag> 
    26912887        <aspect x="0.1" y="0.1" w="0.2" h="0.1" /> 
    26922888        <idealsize w="1" h="1" /> 
     
    27052901        <vertical>true</vertical> 
    27062902        <title></title> 
    2707         <curvetag>xtM_Q_2</curvetag> 
     2903        <curvetag>M_Q_2</curvetag> 
    27082904        <curvetag>Q_2</curvetag> 
     2905        <curvetag>M_ub_Q_2</curvetag> 
     2906        <curvetag>M_lb_Q_2</curvetag> 
    27092907      </Legend> 
    27102908    </Plot> 
     
    27142912        <border color="#000000" width="2" padding="0" margin="0" /> 
    27152913        <border color="#000000" width="2" padding="0" margin="0" /> 
    2716         <tag>Object 443</tag> 
     2914        <tag>Object 564</tag> 
    27172915        <aspect x="0.1" y="0.1" w="0.2" h="0.1" /> 
    27182916        <idealsize w="1" h="1" /> 
     
    27312929        <vertical>true</vertical> 
    27322930        <title></title> 
    2733         <curvetag>xtM_Q_3</curvetag> 
     2931        <curvetag>M_Q_3</curvetag> 
    27342932        <curvetag>Q_3</curvetag> 
     2933        <curvetag>M_ub_Q_3</curvetag> 
     2934        <curvetag>M_lb_Q_3</curvetag> 
    27352935      </Legend> 
    27362936    </Plot> 
  • pmsm/TR2245/unitsteps.cpp

    r281 r283  
    6161        KFE.set_parameters ( &fxu,&hxu,Q,R ); 
    6262        KFE.set_est ( mu0, chmat ( zeros ( 4 ) ) ); 
     63        KFE.set_rv(rx); 
    6364 
    6465        RV rQ ( "{Q }","4" ); 
     
    6667        KFEp.set_parameters ( &fxu,&hxu,Q,R ); 
    6768        KFEp.set_est ( mu0, chmat ( zeros ( 4 ) ) ); 
    68  
    69         //mgamma_fix evolQ ( rQ,rQ ); 
     69         
    7070        migamma_fix evolQ ; 
    71         MPF<EKFCh_unQ> M ( &evolQ,&evolQ,Npart,KFEp ); 
     71        MPF<EKFCh_unQ> M; 
     72        M.set_parameters( &evolQ,&evolQ,Npart); 
    7273        // initialize 
    7374        evolQ.set_parameters ( 0.1, 10*Qdiag, 1.0 ); //sigma = 1/10 mu 
    7475        evolQ.condition ( 10*Qdiag ); //Zdenek default 
    75         M.set_est ( *evolQ._e() ); 
     76        M.set_statistics ( evolQ._e() , &KFEp ); 
    7677        evolQ.set_parameters ( 0.10, 10*Qdiag,0.999 ); //sigma = 1/10 mu 
    7778        // 
    7879 
    79         const epdf& KFEep = KFE.posterior(); 
    80         const epdf& Mep = M.posterior(); 
    81  
     80        M.set_rv(concat(rQ,rx)); 
     81         
    8282        dirfilelog *L; UIbuild(F.lookup("logger"), L);// ( "exp/mpf_test",100 ); 
    8383        int l_X = L->add ( rx, "xt" ); 
    8484        int l_D = L->add ( concat ( ry,ru ), "" ); 
    85         int l_XE= L->add ( rx, "xtE" ); 
    86         int l_XM= L->add ( concat ( rQ,rx ), "xtM" ); 
    87         int l_VE= L->add ( rx, "VE" ); 
    88         int l_VM= L->add ( concat ( rQ,rx ), "VM" ); 
    8985        int l_Q= L->add ( rQ, "" ); 
     86         
     87        KFE.set_options("logbounds"); 
     88        KFE.log_add(L,"KF"); 
     89        M.set_options("logbounds"); 
     90        M.log_add(L,"M"); 
    9091        L->init(); 
    9192 
     
    126127                M.bayes ( concat ( dt,ut ) ); 
    127128 
    128                 vec mea=Mep.mean(); 
    129                 if (max(mea)>1e3){ 
    130                         cout << "here"<<endl; 
    131                 } 
    132129                L->logit ( l_X,xt ); 
    133130                L->logit ( l_D,concat ( dt,ut ) ); 
    134                 L->logit ( l_XE,KFEep.mean() ); 
    135                 L->logit ( l_XM, mea); 
    136                 L->logit ( l_VE,KFEep.variance() ); 
    137                 L->logit ( l_VM,Mep.variance() ); 
    138131                L->logit ( l_Q,Qdiag ); 
     132                 
     133                KFE.logit(L); 
     134                M.logit(L); 
    139135                L->step(); 
    140136        } 
  • pmsm/pmsm.h

    r280 r283  
    3131        vec eval ( const vec &x0, const vec &u0 ) { 
    3232                // last state 
    33                 double iam = x0 ( 0 ); 
    34                 double ibm = x0 ( 1 ); 
    35                 double omm = x0 ( 2 ); 
    36                 double thm = x0 ( 3 ); 
    37                 double uam = u0 ( 0 ); 
    38                 double ubm = u0 ( 1 ); 
     33                const double &iam = x0 ( 0 ); 
     34                const double &ibm = x0 ( 1 ); 
     35                const double &omm = x0 ( 2 ); 
     36                const double &thm = x0 ( 3 ); 
     37                const double &uam = u0 ( 0 ); 
     38                const double &ubm = u0 ( 1 ); 
    3939 
    4040                vec xk( 4 ); 
     
    5353 
    5454        void dfdx_cond ( const vec &x0, const vec &u0, mat &A, bool full=true ) { 
    55                 double iam = x0 ( 0 ); 
    56                 double ibm = x0 ( 1 ); 
    57                 double omm = x0 ( 2 ); 
    58                 double thm = x0 ( 3 ); 
     55                const double &iam = x0 ( 0 ); 
     56                const double &ibm = x0 ( 1 ); 
     57                const double &omm = x0 ( 2 ); 
     58                const double &thm = x0 ( 3 ); 
    5959                // d ia 
    6060                A ( 0,0 ) = ( 1.0- Rs/Ls*dt ); A ( 0,1 ) = 0.0; 
  • pmsm/simulator_zdenek/ekf_example/ekf_obj.h

    r279 r283  
    3030An approximation of the exact Bayesian filter with Gaussian noices and non-linear evolutions of their mean. 
    3131*/ 
    32 class EKFfixed : public BM, public BMcond { 
     32class EKFfixed : public BM { 
    3333public: 
    3434void init_ekf(double Tv); 
     
    6464public: 
    6565        //! Default constructor 
    66         EKFfixed ():BM(),BMcond(),E(),Ry(2,2){ 
     66        EKFfixed ():BM(),E(),Ry(2,2){ 
    6767        int i; 
    6868 for(i=0;i<16;i++){Q[i]=0;} 
  • tests/testKF_QR.cpp

    r278 r283  
    6161        evolQR.set_parameters(10.0,"1 1 1"); //sigma = 1/10 mu 
    6262         
    63         MPF<KFcondQR > KF_QR(&evolQR,&evolQR,100,KF); 
     63        MPF<KFcondQR> KF_QR; 
     64        KF_QR.set_parameters(&evolQR,&evolQR,100); 
    6465        evolQR.condition("1 1 1"); 
    65         epdf& pfinit=evolQR._epdf(); 
    66         KF_QR.set_est(pfinit); 
     66        KF_QR.set_statistics(evolQR._e(), &KF); 
    6767        const epdf& mpost=KF_QR.posterior(); 
    6868        const epdf& mposttr=KFtr.posterior(); 
  • tests/testPF.cpp

    r278 r283  
    2323        euni eun; 
    2424        eun.set_parameters("0","1"); 
    25         emp.set_parameters(ones(10),&eun); 
     25        emp.set_statistics(ones(10),&eun); 
    2626        vec &v=emp._w(); 
    2727        Array<vec> &S=emp._samples(); 
  • tests/testResample.cpp

    r278 r283  
    2323        euni eun; 
    2424        eun.set_parameters("0","1"); 
    25         emp.set_parameters(ones(10),&eun); 
     25        emp.set_statistics(ones(10),&eun); 
    2626        vec &v=emp._w(); 
    2727        Array<vec> &S=emp._samples();