Show
Ignore:
Timestamp:
05/21/10 00:44:04 (14 years ago)
Author:
smidl
Message:

Corrections in ARX and PF

Files:
1 modified

Legend:

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

    r896 r964  
    44void ARX::bayes_weighted ( const vec &yt, const vec &cond, const double w ) { 
    55 
    6         bdm_assert_debug ( yt.length() >= dimy, "ARX::bayes yt is smaller then dimc" ); 
    7         bdm_assert_debug ( cond.length() >= dimc, "ARX::bayes cond is smaller then dimc" ); 
     6        bdm_assert_debug ( yt.length() == dimy, "ARX::bayes yt is smaller then dimensiony()" ); 
     7        bdm_assert_debug ( (cond.length() == rgrlen - int(have_constant==true)) , "ARX::bayes dimension of cond is not rgrlen" ); 
    88        double lnc; 
    99        //cache 
     
    217217        BMEF::from_setting(set); 
    218218         
    219         shared_ptr<RV> yrv_ = UI::build<RV> ( set, "rv", UI::compulsory ); 
    220         shared_ptr<RV> rrv = UI::build<RV> ( set, "rgr", UI::compulsory ); 
    221         dimy = yrv_->_dsize(); 
     219        RV rrv;  
     220        UI::get (rrv, set, "rgr", UI::compulsory ); 
     221         
     222        dimy = yrv._dsize(); 
     223        bdm_assert(dimy>0,"ARX::yrv should not be empty"); 
    222224        // rgrlen - including constant!!! 
    223         dimc = rrv->_dsize(); 
    224  
    225         yrv = *yrv_; 
    226         rvc = *rrv; 
     225        rgrlen = rrv._dsize(); 
    227226 
    228227        int constant; 
     
    232231                have_constant = constant > 0; 
    233232        } 
    234         int rgrlen = dimc + int ( have_constant == true ); 
     233        dimc = rgrlen; 
     234        rvc = rrv; 
     235        rgrlen += int ( have_constant == true ); 
    235236 
    236237        //init 
     
    259260        // frg handled by BMEF 
    260261 
    261         //name results (for logging) 
    262         shared_ptr<RV> rv_par = UI::build<RV> ( set, "rv_param", UI::optional ); 
    263         if ( !rv_par ) { 
    264                 est.set_rv ( RV ( "{theta r }", vec_2 ( dimy*rgrlen, dimy*dimy ) ) ); 
    265         } else { 
    266                 est.set_rv ( *rv_par ); 
    267         }        
    268 } 
    269  
    270 } 
    271  
     262} 
     263 
     264} 
     265