Changeset 750

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

dimc ze set_parameters do validate

Location:
library
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/base/bdmbase.h

    r746 r750  
    516516        epdf() {}; 
    517517        epdf ( const epdf &e ) : pdf ( e ) {}; 
    518         void set_parameters ( int dim0 ) { 
     518         
     519        virtual void    validate (int dim0){ 
    519520                dim = dim0; 
    520521        } 
     522         
    521523        epdf* _copy_() const { 
    522524                return new epdf ( *this ); 
  • library/bdm/estim/mixtures.cpp

    r737 r750  
    148148        tmp = new emix( ); 
    149149        tmp->set_parameters ( weights.posterior().mean(), pC ); 
     150        tmp->validate(); 
    150151        return tmp; 
    151152} 
  • 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 
  • library/tests/stresssuite/mixtures_stress.cpp

    r741 r750  
    6868        Simul.set_rv ( x ); 
    6969        Simul.set_parameters ( "0.5 0.6", Sim ); 
     70        Simul.validate(); 
    7071 
    7172        // Sample parameters 
  • library/tests/testsuite/emix_test.cpp

    r722 r750  
    3939        M1.set_rv ( xy ); 
    4040        M1.set_parameters ( vec ( "1" ), A1 ); 
     41        M1.validate(); 
    4142 
    4243        // test if ARX and emix with one ARX are the same 
     
    6869        M2.set_rv ( xy ); 
    6970        M2.set_parameters ( vec ( "1" ), A2 ); 
    70  
     71        M2.validate(); 
    7172 
    7273        // mixture normalization 
  • library/tests/testsuite/epdf_test.cpp

    r727 r750  
    1818// not using epdf_harness because eprod isn't configurable (yet?) 
    1919TEST ( eprod_test ) { 
     20                 
    2021        RV a ( "{eprod_a }", "1" ); 
    2122        RV b ( "{eprod_b }", "2" ); 
     
    6162        rwiWishartCh rwW; 
    6263        rwW.set_parameters ( 2, 0.1, "1 1", 0.9 ); 
     64        rwW.validate(); 
    6365        mat mea = zeros ( 2, 2 ); 
    6466        mat wMch = chol ( wM ); 
    6567        mat Ch ( 2, 2 ); 
     68         
    6669        for ( int i = 0; i < 100; i++ ) { 
    6770                vec tmp = rwW.samplecond ( vec ( wMch._data(), 4 ) ); 
    6871                copy_vector ( 4, tmp._data(), Ch._data() ); 
    6972                mea += Ch.T() * Ch; 
     73                 
    7074        } 
    7175