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

UI for ldmat - use it in egiw

Files:
1 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.