Changeset 750 for library/bdm/stat

Show
Ignore:
Timestamp:
12/07/09 01:26:55 (15 years ago)
Author:
sarka
Message:

dimc ze set_parameters do validate

Location:
library/bdm/stat
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/stat/emix.cpp

    r739 r750  
    55void emix::set_parameters ( const vec &w0, const Array<shared_ptr<epdf> > &Coms0 ) { 
    66        w = w0 / sum ( w0 ); 
    7         dim = Coms0 ( 0 )->dimension(); 
     7         
    88        bool isnamed = Coms0 ( 0 )->isnamed(); 
    99        int i; 
    1010        RV tmp_rv; 
    1111        if ( isnamed ) tmp_rv = Coms0 ( 0 )->_rv(); 
    12  
    13         for ( i = 0; i < w.length(); i++ ) { 
    14                 bdm_assert ( dim == ( Coms0 ( i )->dimension() ), "Component sizes do not match!" ); 
    15                 bdm_assert ( !isnamed || tmp_rv.equal ( Coms0 ( i )->_rv() ), "Component RVs do not match!" ); 
    16         } 
    17  
    1812        Coms = Coms0; 
    1913 
    2014        if ( isnamed ) epdf::set_rv ( tmp_rv ); //coms aer already OK, no need for set_rv 
    2115} 
     16 
     17void emix::validate (){ 
     18        dim = Coms ( 0 )->dimension(); 
     19        bool isnamed = Coms ( 0 )->isnamed(); 
     20        int i; 
     21        RV tmp_rv; 
     22        if ( isnamed ) tmp_rv = Coms ( 0 )->_rv(); 
     23        for ( i = 0; i < w.length(); i++ ) { 
     24                bdm_assert ( dim == ( Coms ( i )->dimension() ), "Component sizes do not match!" ); 
     25                bdm_assert ( !isnamed || tmp_rv.equal ( Coms ( i )->_rv() ), "Component RVs do not match!" ); 
     26        } 
     27 
     28} 
     29 
     30 
     31 
    2232 
    2333vec emix::sample() const { 
     
    101111 
    102112        target.set_parameters ( w, Cn ); 
     113        target.validate(); 
    103114} 
    104115 
     
    181192 
    182193        target.set_parameters ( w, Cn ); 
     194        target.validate(); 
    183195} 
    184196 
  • library/bdm/stat/emix.h

    r739 r750  
    127127        */ 
    128128        void set_parameters ( const vec &w, const Array<shared_ptr<epdf> > &Coms ); 
     129     
     130        virtual void validate (); 
    129131 
    130132        vec sample() const; 
     
    187189                // TODO asi lze nacitat primocare do w a coms, jen co bude hotovy validate() 
    188190                set_parameters ( w0, Coms0 ); 
     191                validate(); 
    189192        } 
    190193}; 
  • library/bdm/stat/exp_family.h

    r746 r750  
    12931293                delta = delta0; 
    12941294                W.set_parameters ( inv ( Y0 ), delta0 ); 
    1295                 dim = W.dimension(); 
    12961295                p = Y0.rows(); 
    12971296        } 
     1297         
     1298        virtual void    validate (){ 
     1299      dim = W.dimension(); 
     1300        } 
     1301         
     1302         
    12981303        vec sample() const { 
    12991304                mat iCh; 
     
    14121417        //! Set samples 
    14131418        void set_parameters ( const Array<vec> &Av ) { 
    1414                 bdm_assert ( Av.size() > 0, "Empty samples" ); 
    14151419                n = Av.size(); 
    1416                 epdf::set_parameters ( Av ( 0 ).length() ); 
    14171420                w = 1 / n * ones ( n ); 
    14181421                samples = Av; 
    14191422        }; 
     1423        virtual void    validate (){ 
     1424          bdm_assert ( n > 0, "Empty samples" ); 
     1425          epdf::validate ( samples ( 0 ).length() ); 
     1426        } 
    14201427        //! Potentially dangerous, use with care. 
    14211428        vec& _w()  { 
  • library/bdm/stat/merger.h

    r739 r750  
    102102                Npoints = Sup.points(); 
    103103                eSmp.set_parameters ( Sup._Spoints() ); 
     104                eSmp.validate(); 
    104105        } 
    105106        //! set debug file