Changeset 766 for library/bdm/stat/emix.h
- Timestamp:
- 01/11/10 22:55:57 (14 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/stat/emix.h
r750 r766 53 53 // adjust rv and rvc 54 54 55 set_rv ( rv ); // TODO co kdyby tohle samo uz nastavovalo dimension?!?!55 set_rv ( rv ); 56 56 dim = rv._dsize(); 57 57 … … 81 81 return tmp; 82 82 } 83 84 //! Returns a sample from the density conditioned on \c cond, \f$x \sim epdf(rv|cond)\f$. \param cond is numeric value of \c rv 85 virtual vec samplecond ( const vec &cond ) NOT_IMPLEMENTED(0); 86 83 87 //! Object takes ownership of nom and will destroy it 84 88 void ownnom() { … … 91 95 } 92 96 } 97 98 99 93 100 94 101 private: … … 120 127 emix ( ) : epdf ( ) { } 121 128 122 /*!123 \brief Set weights \c w and components \c Coms124 125 Shared pointers in Coms are kept inside this instance and126 shouldn't be modified after being passed to this method.127 */128 void set_parameters ( const vec &w, const Array<shared_ptr<epdf> > &Coms );129 130 129 virtual void validate (); 131 130 … … 148 147 shared_ptr<pdf> condition ( const RV &rv ) const; 149 148 150 //Access methods 151 //! returns a pointer to the internal mean value. Use with Care!149 //Access methods 150 //! returns a reference to the internal weights. Use with Care! 152 151 vec& _w() { 153 152 return w; 154 153 } 155 154 156 //!access function 155 /*! 156 \brief returns a reference to the internal array of components. Use with Care! Set components \c Coms 157 158 Shared pointers in Coms are kept inside this instance and 159 shouldn't be modified after being passed to this method. 160 */ 161 Array<shared_ptr<epdf>>& _Coms ( ) { 162 return Coms; 163 } 164 165 //! returns a reference to the internal components specified by index i. Use with Care! 157 166 shared_ptr<epdf> _Coms ( int i ) { 158 167 return Coms ( i ); … … 174 183 //! \endcode 175 184 //!@} 176 void from_setting ( const Setting &set ) { 177 178 vec w0; 179 Array<shared_ptr<epdf> > Coms0; 180 181 UI::get ( Coms0, set, "pdfs", UI::compulsory ); 182 183 if ( !UI::get ( w0, set, "weights", UI::optional ) ) { 184 int len = Coms.length(); 185 w0.set_length ( len ); 186 w0 = 1.0 / len; 187 } 188 189 // TODO asi lze nacitat primocare do w a coms, jen co bude hotovy validate() 190 set_parameters ( w0, Coms0 ); 191 validate(); 192 } 185 void from_setting ( const Setting &set ); 193 186 }; 194 187 SHAREDPTR ( emix ); … … 284 277 //! Data link for each pdfs 285 278 Array<shared_ptr<datalink_m2m> > dls; 286 287 protected:288 //! dummy epdf used only as storage for RV and dim289 epdf iepdf;290 279 291 280 public: … … 330 319 //!@} 331 320 void from_setting ( const Setting &set ) { 332 Array<shared_ptr<pdf> > atmp; //temporary Array333 UI::get ( atmp, set, "pdfs", UI::compulsory );334 set_elements ( atmp);321 Array<shared_ptr<pdf> > temp_array; 322 UI::get ( temp_array, set, "pdfs", UI::compulsory ); 323 set_elements ( temp_array ); 335 324 } 336 325 }; … … 418 407 mmix() : Coms ( 0 ) { } 419 408 420 //! Set weights \c w and components \c R421 void set_parameters ( const vec &w0, const Array<shared_ptr<pdf> > &Coms0 ) {422 //!\todo check if all components are OK423 Coms = Coms0;424 w = w0;425 426 if ( Coms0.length() > 0 ) {427 set_rv ( Coms ( 0 )->_rv() );428 dim = rv._dsize();429 set_rvc ( Coms ( 0 )->_rvc() );430 dimc = rvc._dsize();431 }432 }433 409 double evallogcond ( const vec &dt, const vec &cond ) { 434 410 double ll = 0.0; … … 449 425 //! \endcode 450 426 //!@} 451 void from_setting ( const Setting &set ) { 452 UI::get ( Coms, set, "pdfs", UI::compulsory ); 453 454 // TODO ma byt zde, ci ve validate()? 455 if ( Coms.length() > 0 ) { 456 set_rv ( Coms ( 0 )->_rv() ); 457 dim = rv._dsize(); 458 set_rvc ( Coms ( 0 )->_rvc() ); 459 dimc = rvc._dsize(); 460 } 461 462 if ( !UI::get ( w, set, "weights", UI::optional ) ) { 463 int len = Coms.length(); 464 w.set_length ( len ); 465 w = 1.0 / len; 466 } 467 } 427 void from_setting ( const Setting &set ); 428 429 virtual void validate(); 468 430 }; 469 431 SHAREDPTR ( mmix );