Changeset 280 for bdm/stat/libEF.h

Show
Ignore:
Timestamp:
02/24/09 14:12:46 (15 years ago)
Author:
smidl
Message:

progress...

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • bdm/stat/libEF.h

    r271 r280  
    116116        //!@{ 
    117117 
    118         enorm ( ):eEF ( ), mu ( ),R ( ) {}; 
     118        enorm ( ) :eEF ( ), mu ( ),R ( ) {}; 
    119119        enorm ( const vec &mu,const sq_T &R ) {set_parameters ( mu,R );} 
    120120        void set_parameters ( const vec &mu,const sq_T &R ); 
     
    366366        //!@{ 
    367367        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 );}; 
    369369        void set_parameters ( const vec &a, const vec &b ) {eg.set_parameters ( a,b );}; 
    370370        //!@} 
     
    476476        template<class sq_M> 
    477477        friend std::ostream &operator<< ( std::ostream &os,  mlnorm<sq_M> &ml ); 
     478}; 
     479 
     480//! Mpdf with general function for mean value 
     481template<class sq_T> 
     482class mgnorm : public mEF { 
     483protected: 
     484        //! Internal epdf that arise by conditioning on \c rvc 
     485        enorm<sq_T> epdf; 
     486        vec &mu; 
     487        fnc* g; 
     488public: 
     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 );}; 
    478494}; 
    479495 
     
    663679        Array<vec> samples; 
    664680public: 
    665         //! \name Constructors  
    666         //!@{ 
    667         eEmp ( ) :epdf ( ),w (  ),samples ( ) {}; 
    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 
    671687        //! Set samples and weights 
    672688        void set_parameters ( const vec &w0, const epdf* pdf0 ); 
     
    817833template<class sq_T> 
    818834epdf* 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" ); 
    820836        ivec irvn = rvn.dataind ( rv ); 
    821837 
    822838        sq_T Rn ( R,irvn ); //select rows and columns of R 
    823          
     839 
    824840        enorm<sq_T>* tmp = new enorm<sq_T>; 
    825841        tmp->set_rv ( rvn ); 
     
    856872 
    857873        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 ); 
    859875        tmp->set_parameters ( A,mu1-A*mu2,R_n ); 
    860876        return tmp;