Changeset 1015 for library/bdm/stat

Show
Ignore:
Timestamp:
05/27/10 23:08:07 (14 years ago)
Author:
smidl
Message:

UI for ldmat - use it in egiw

Location:
library/bdm/stat
Files:
2 modified

Legend:

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

    r1013 r1015  
    2020void egiw::set_parameters ( int dimx0, ldmat V0, double nu0 ) { 
    2121        dimx = dimx0; 
    22         nPsi = V0.rows() - dimx; 
    23  
     22        nPsi = V0.rows()-dimx; 
    2423        V = V0; 
    2524        if ( nu0 < 0 ) { 
     
    323322                        nu = -1; 
    324323                } 
    325                 mat V; 
    326                 if ( !UI::get ( V, set, "V", UI::optional ) ) { 
    327                         vec dV; 
    328                         UI::get ( dV, set, "dV", UI::compulsory ); 
    329                         set_parameters ( dimx, ldmat ( dV ), nu ); 
    330  
    331                 } else { 
    332                         set_parameters ( dimx, V, nu ); 
     324                mat Vful; 
     325                if (!UI::get(V, set, "V", UI::optional)){ 
     326                        if ( !UI::get ( Vful, set, "V", UI::optional ) ) { 
     327                                vec dV; 
     328                                UI::get ( dV, set, "dV", UI::compulsory ); 
     329                                set_parameters ( dimx, ldmat ( dV ), nu ); 
     330 
     331                        } else { 
     332                                set_parameters ( dimx, Vful, nu ); 
     333                        } 
    333334                } 
    334335        } 
     
    337338                epdf::to_setting ( set ); 
    338339                UI::save ( dimx, set, "dimx" ); 
    339                 UI::save ( V.to_mat(), set, "V" ); 
     340                UI::save ( V, set, "V" ); 
    340341                UI::save ( nu, set, "nu" ); 
    341342        }; 
     
    343344void egiw::validate() { 
    344345        eEF::validate(); 
     346        nPsi = V.rows() - dimx; 
    345347        dim = dimx * ( dimx + nPsi );    
     348         
     349        if ( nu < 0 ) { 
     350                nu = 0.1 + nPsi + 2 * dimx + 2; // +2 assures finite expected value of R 
     351                // terms before that are sufficient for finite normalization 
     352        } 
    346353         
    347354            // check sizes, rvs etc. 
  • library/bdm/stat/exp_family.h

    r1013 r1015  
    443443        \code 
    444444        class = 'egiw'; 
    445         V     = [];               // square matrix 
    446         dV    = [];               // vector of diagonal of V (when V not given) 
    447         nu    = [];               // scalar \nu ((almost) degrees of freedom) 
     445        V.L     = [];             // L part of matrix V 
     446        V.D     = [];             // D part of matrix V 
     447        -or- V  = []              // full matrix V 
     448        -or- dV = [];               // vector of diagonal of V (when V not given) 
     449        nu      = [];               // scalar \nu ((almost) degrees of freedom) 
    448450                                                          // when missing, it will be computed to obtain proper pdf 
    449         dimx  = [];               // dimension of the wishart part 
     451        dimx    = [];               // dimension of the wishart part 
    450452        rv = RV({'name'})         // description of RV 
    451453        rvc = RV({'name'})        // description of RV in condition 
    452         log_level = 'tri';                // set the level of logged details 
    453454        \endcode 
    454455