Changeset 750
- Timestamp:
- 12/07/09 01:26:55 (15 years ago)
- Location:
- library
- Files:
-
- 9 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/base/bdmbase.h
r746 r750 516 516 epdf() {}; 517 517 epdf ( const epdf &e ) : pdf ( e ) {}; 518 void set_parameters ( int dim0 ) { 518 519 virtual void validate (int dim0){ 519 520 dim = dim0; 520 521 } 522 521 523 epdf* _copy_() const { 522 524 return new epdf ( *this ); -
library/bdm/estim/mixtures.cpp
r737 r750 148 148 tmp = new emix( ); 149 149 tmp->set_parameters ( weights.posterior().mean(), pC ); 150 tmp->validate(); 150 151 return tmp; 151 152 } -
library/bdm/stat/emix.cpp
r739 r750 5 5 void emix::set_parameters ( const vec &w0, const Array<shared_ptr<epdf> > &Coms0 ) { 6 6 w = w0 / sum ( w0 ); 7 dim = Coms0 ( 0 )->dimension();7 8 8 bool isnamed = Coms0 ( 0 )->isnamed(); 9 9 int i; 10 10 RV tmp_rv; 11 11 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 18 12 Coms = Coms0; 19 13 20 14 if ( isnamed ) epdf::set_rv ( tmp_rv ); //coms aer already OK, no need for set_rv 21 15 } 16 17 void 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 22 32 23 33 vec emix::sample() const { … … 101 111 102 112 target.set_parameters ( w, Cn ); 113 target.validate(); 103 114 } 104 115 … … 181 192 182 193 target.set_parameters ( w, Cn ); 194 target.validate(); 183 195 } 184 196 -
library/bdm/stat/emix.h
r739 r750 127 127 */ 128 128 void set_parameters ( const vec &w, const Array<shared_ptr<epdf> > &Coms ); 129 130 virtual void validate (); 129 131 130 132 vec sample() const; … … 187 189 // TODO asi lze nacitat primocare do w a coms, jen co bude hotovy validate() 188 190 set_parameters ( w0, Coms0 ); 191 validate(); 189 192 } 190 193 }; -
library/bdm/stat/exp_family.h
r746 r750 1293 1293 delta = delta0; 1294 1294 W.set_parameters ( inv ( Y0 ), delta0 ); 1295 dim = W.dimension();1296 1295 p = Y0.rows(); 1297 1296 } 1297 1298 virtual void validate (){ 1299 dim = W.dimension(); 1300 } 1301 1302 1298 1303 vec sample() const { 1299 1304 mat iCh; … … 1412 1417 //! Set samples 1413 1418 void set_parameters ( const Array<vec> &Av ) { 1414 bdm_assert ( Av.size() > 0, "Empty samples" );1415 1419 n = Av.size(); 1416 epdf::set_parameters ( Av ( 0 ).length() );1417 1420 w = 1 / n * ones ( n ); 1418 1421 samples = Av; 1419 1422 }; 1423 virtual void validate (){ 1424 bdm_assert ( n > 0, "Empty samples" ); 1425 epdf::validate ( samples ( 0 ).length() ); 1426 } 1420 1427 //! Potentially dangerous, use with care. 1421 1428 vec& _w() { -
library/bdm/stat/merger.h
r739 r750 102 102 Npoints = Sup.points(); 103 103 eSmp.set_parameters ( Sup._Spoints() ); 104 eSmp.validate(); 104 105 } 105 106 //! set debug file -
library/tests/stresssuite/mixtures_stress.cpp
r741 r750 68 68 Simul.set_rv ( x ); 69 69 Simul.set_parameters ( "0.5 0.6", Sim ); 70 Simul.validate(); 70 71 71 72 // Sample parameters -
library/tests/testsuite/emix_test.cpp
r722 r750 39 39 M1.set_rv ( xy ); 40 40 M1.set_parameters ( vec ( "1" ), A1 ); 41 M1.validate(); 41 42 42 43 // test if ARX and emix with one ARX are the same … … 68 69 M2.set_rv ( xy ); 69 70 M2.set_parameters ( vec ( "1" ), A2 ); 70 71 M2.validate(); 71 72 72 73 // mixture normalization -
library/tests/testsuite/epdf_test.cpp
r727 r750 18 18 // not using epdf_harness because eprod isn't configurable (yet?) 19 19 TEST ( eprod_test ) { 20 20 21 RV a ( "{eprod_a }", "1" ); 21 22 RV b ( "{eprod_b }", "2" ); … … 61 62 rwiWishartCh rwW; 62 63 rwW.set_parameters ( 2, 0.1, "1 1", 0.9 ); 64 rwW.validate(); 63 65 mat mea = zeros ( 2, 2 ); 64 66 mat wMch = chol ( wM ); 65 67 mat Ch ( 2, 2 ); 68 66 69 for ( int i = 0; i < 100; i++ ) { 67 70 vec tmp = rwW.samplecond ( vec ( wMch._data(), 4 ) ); 68 71 copy_vector ( 4, tmp._data(), Ch._data() ); 69 72 mea += Ch.T() * Ch; 73 70 74 } 71 75