Changeset 378
- Timestamp:
- 06/17/09 23:53:08 (16 years ago)
- Files:
-
- 5 modified
- 6 moved
Legend:
- Unmodified
- Added
- Removed
-
bdm/stat/emix.h
r361 r378 234 234 /*!\brief Constructor from list of mFacs, 235 235 */ 236 mprod ( Array<mpdf*> mFacs ) : compositepdf ( mFacs ), mpdf (), epdfs ( n ), dls ( n ) { 236 mprod (){}; 237 mprod (Array<mpdf*> mFacs ){set_elements( mFacs );}; 238 void set_elements(Array<mpdf*> mFacs ) { 239 240 set_elements(mFacs); 241 237 242 ep=&dummy; 238 243 RV rv=getrv ( true ); … … 240 245 setrvc ( ep->_rv(),rvc ); 241 246 // rv and rvc established = > we can link them with mpdfs 242 for ( int i = 0;i < n;i++ ) {247 for ( int i = 0;i < mpdfs.length(); i++ ) { 243 248 dls ( i ) = new datalink_m2m; 244 249 dls(i)->set_connection( mpdfs ( i )->_rv(), mpdfs ( i )->_rvc(), _rv(), _rvc() ); 245 250 } 246 251 247 for ( int i=0; i<n;i++ ) {252 for ( int i=0; i<mpdfs.length(); i++ ) { 248 253 epdfs ( i ) =& ( mpdfs ( i )->_epdf() ); 249 254 } … … 253 258 int i; 254 259 double res = 0.0; 255 for ( i = n- 1;i >= 0;i-- ) {260 for ( i = mpdfs.length() - 1;i >= 0;i-- ) { 256 261 /* if ( mpdfs(i)->_rvc().count() >0) { 257 262 mpdfs ( i )->condition ( dls ( i )->get_cond ( val,cond ) ); … … 272 277 vec smpi; 273 278 // Hard assumption here!!! We are going backwards, to assure that samples that are needed from smp are already generated! 274 for ( int i = ( n- 1 );i >= 0;i-- ) {279 for ( int i = ( mpdfs.length() - 1 );i >= 0;i-- ) { 275 280 if ( mpdfs ( i )->dimensionc() ) { 276 281 mpdfs ( i )->condition ( dls ( i )->get_cond ( smp ,cond ) ); // smp is val here!! -
bdm/stat/libBM.cpp
r377 r378 255 255 RV rv; //empty rv 256 256 bool rvaddok; 257 for ( int i = 0;i < n;i++ ) {257 for ( int i = 0;i < mpdfs.length();i++ ) { 258 258 rvaddok=rv.add ( mpdfs ( i )->_rv() ); //add rv to common rvs. 259 259 // If rvaddok==false, mpdfs overlap => assert error. … … 264 264 265 265 void compositepdf::setrvc ( const RV &rv, RV &rvc ) { 266 for ( int i = 0;i < n;i++ ) {266 for ( int i = 0;i < mpdfs.length();i++ ) { 267 267 RV rvx = mpdfs ( i )->_rvc().subt ( rv ); 268 268 rvc.add ( rvx ); //add rv to common rvc -
bdm/stat/libBM.h
r377 r378 575 575 }; 576 576 577 //!\brief Abstract composition of pdfs, will be used for specific classes577 //!\brief Chain rule of pdfs - abstract part common for mprod and merger. 578 578 //!this abstract class is common to epdf and mpdf 579 //!\todo Think of better design - global functions rv=get_rv(Array<mpdf*> mpdfs); ?? 579 580 class compositepdf 580 581 { -
bdm/stat/libEF.h
r377 r378 125 125 enorm ( const vec &mu,const sq_T &R ) {set_parameters ( mu,R );} 126 126 void set_parameters ( const vec &mu,const sq_T &R ); 127 void from_setting(const Setting &root); 127 128 //!@} 128 129 … … 141 142 // mlnorm<sq_T>* condition ( const RV &rvn ) const ; <=========== fails to cmpile. Why? 142 143 mpdf* condition ( const RV &rvn ) const ; 143 enorm<sq_T>* marginal ( const RV &rv ) const;144 enorm<sq_T>* marginal ( const RV &rv ) const; 144 145 // epdf* marginal ( const RV &rv ) const; 145 146 //!@} … … 791 792 only allow diagonal covariances! 792 793 793 Density of the form \f$ \log(x)\sim \mathcal{N}(\mu,\sigma^2) , i.e.794 Density of the form \f$ \log(x)\sim \mathcal{N}(\mu,\sigma^2) \f$ , i.e. 794 795 \f[ 795 796 x \sim \frac{1}{x\sigma\sqrt{2\pi}}\exp{-\frac{1}{2\sigma^2}(\log(x)-\mu)} … … 1017 1018 //!@{ 1018 1019 eEmp ( ) :epdf ( ),w ( ),samples ( ) {}; 1020 //! copy constructor 1019 1021 eEmp ( const eEmp &e ) : epdf ( e ), w ( e.w ), samples ( e.samples ) {}; 1020 1022 //!@} … … 1087 1089 1088 1090 template<class sq_T> 1091 void enorm<sq_T>::from_setting(const Setting &root){ 1092 vec mu; 1093 UI::get(mu,root,"mu"); 1094 mat R; 1095 UI::get(R,root,"R"); 1096 set_parameters(mu,R); 1097 1098 RV* r = UI::build<RV>(root,"rv"); 1099 set_rv(*r); 1100 delete r; 1101 } 1102 1103 template<class sq_T> 1089 1104 void enorm<sq_T>::dupdate ( mat &v, double nu ) 1090 1105 { -
bdm/user_info.h
r377 r378 17 17 18 18 #ifndef BDMLIB 19 //!Macro for registration of classes into map of UserInfos -- registered class is scriptable 19 20 #define UIREGISTER(class_name) template<> const Particular_UI<class_name>& Particular_UI<class_name>::ui = Particular_UI<class_name>(#class_name) 20 21 #else