Changeset 1359

Show
Ignore:
Timestamp:
05/07/11 22:40:29 (14 years ago)
Author:
smidl
Message:

ARXwin class for ARX on fixed-length window

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/estim/arx.h

    r1354 r1359  
    284284         
    285285UIREGISTER ( ARXmaxent ); 
    286          
     286 
     287/*! \brief ARX model with fixed-length window - old entries are removed 
     288 * \f[ f(    heta| d_1 \ldots d_t) \f] 
     289 *  
     290 */ 
     291class ARXwin : public ARX { 
     292protected: 
     293        mat Y; 
     294        mat Cond; 
     295         
     296        int win_length; 
     297        ldmat V0; 
     298        double nu0; 
     299public: 
     300        ARXwin() : ARX() {}; 
     301        //! copy constructor 
     302        void set_parameters(const int win_length0){  
     303                win_length=win_length0; 
     304        } 
     305        ARXwin ( const ARXwin &A0 ) : ARX(A0), Y( A0.Y), Cond(A0.Cond) {}; 
     306         
     307        virtual ARXwin* _copy() const { 
     308                ARXwin *A = new ARXwin ( *this ); 
     309                return A; 
     310        } 
     311         
     312        void bayes ( const vec &val, const vec &cond ) { 
     313                // fill window 
     314                Y.append_col(val); 
     315                Cond.append_col(cond);           
     316                if (Y.cols()>win_length){ 
     317                        // shift the buffer 
     318                        Y=Y.get_cols(1,Y.cols()-1); 
     319                        Cond=Cond.get_cols(1,Cond.cols()-1); 
     320                } 
     321                 
     322                est._V()=V0; 
     323                est._nu()=nu0; 
     324                for ( int t = 0; t < Y.cols(); t++ ) { 
     325                        ARX::bayes ( Y.get_col ( t ), Cond.get_col ( t ) ); 
     326                } 
     327                 
     328        } 
     329        void from_setting(const Setting &set){ 
     330                ARX::from_setting(set); 
     331                UI::get(win_length,set,"win_length",UI::compulsory); 
     332        } 
     333        void validate() { 
     334                ARX::validate(); 
     335                V0=est._V(); 
     336                nu0=est._nu(); 
     337        } 
     338}; 
     339         
     340UIREGISTER ( ARXwin ); 
     341         
     342 
    287343 
    288344/*! \brief ARX with partial forgetting