Changeset 280 for bdm/stat/libEF.h
- Timestamp:
- 02/24/09 14:12:46 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
bdm/stat/libEF.h
r271 r280 116 116 //!@{ 117 117 118 enorm ( ) :eEF ( ), mu ( ),R ( ) {};118 enorm ( ) :eEF ( ), mu ( ),R ( ) {}; 119 119 enorm ( const vec &mu,const sq_T &R ) {set_parameters ( mu,R );} 120 120 void set_parameters ( const vec &mu,const sq_T &R ); … … 366 366 //!@{ 367 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 );};368 eigamma ( const vec &a, const vec &b ) :eEF ( ), eg(),alpha ( eg._alpha() ), beta ( eg._beta() ) {eg.set_parameters ( a,b );}; 369 369 void set_parameters ( const vec &a, const vec &b ) {eg.set_parameters ( a,b );}; 370 370 //!@} … … 476 476 template<class sq_M> 477 477 friend std::ostream &operator<< ( std::ostream &os, mlnorm<sq_M> &ml ); 478 }; 479 480 //! Mpdf with general function for mean value 481 template<class sq_T> 482 class mgnorm : public mEF { 483 protected: 484 //! Internal epdf that arise by conditioning on \c rvc 485 enorm<sq_T> epdf; 486 vec μ 487 fnc* g; 488 public: 489 //!default constructor 490 mgnorm() :mu ( epdf._mu() ) {ep=&epdf;} 491 //!set mean function 492 void set_parameters ( fnc* g0, const sq_T &R0 ) {g=g0; epdf.set_parameters ( zeros ( g->_dimy() ), R0 );} 493 void condition ( const vec &cond ) {mu=g->eval ( cond );}; 478 494 }; 479 495 … … 663 679 Array<vec> samples; 664 680 public: 665 //! \name Constructors 666 //!@{ 667 eEmp ( ) :epdf ( ),w ( 668 eEmp ( const eEmp &e ): epdf(e), w(e.w), samples(e.samples) {};669 //!@} 670 681 //! \name Constructors 682 //!@{ 683 eEmp ( ) :epdf ( ),w ( ),samples ( ) {}; 684 eEmp ( const eEmp &e ) : epdf ( e ), w ( e.w ), samples ( e.samples ) {}; 685 //!@} 686 671 687 //! Set samples and weights 672 688 void set_parameters ( const vec &w0, const epdf* pdf0 ); … … 817 833 template<class sq_T> 818 834 epdf* enorm<sq_T>::marginal ( const RV &rvn ) const { 819 it_assert_debug (isnamed(), "rv description is not assigned");835 it_assert_debug ( isnamed(), "rv description is not assigned" ); 820 836 ivec irvn = rvn.dataind ( rv ); 821 837 822 838 sq_T Rn ( R,irvn ); //select rows and columns of R 823 839 824 840 enorm<sq_T>* tmp = new enorm<sq_T>; 825 841 tmp->set_rv ( rvn ); … … 856 872 857 873 mlnorm<sq_T>* tmp=new mlnorm<sq_T> ( ); 858 tmp->set_rv (rvn); tmp->set_rvc(rvc);874 tmp->set_rv ( rvn ); tmp->set_rvc ( rvc ); 859 875 tmp->set_parameters ( A,mu1-A*mu2,R_n ); 860 876 return tmp;