Show
Ignore:
Timestamp:
03/24/10 14:30:43 (14 years ago)
Author:
sarka
Message:

dim ze set_parameters do validate

Files:
1 modified

Legend:

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

    r870 r878  
    369369        egiw ( int dimx0, ldmat V0, double nu0 = -1.0 ) : eEF() { 
    370370                set_parameters ( dimx0, V0, nu0 ); 
     371                validate(); 
    371372        }; 
    372373 
     
    465466                        UI::get ( dV, set, "dV", UI::compulsory ); 
    466467                        set_parameters ( dimx, ldmat ( dV ), nu ); 
     468                        validate(); 
    467469 
    468470                } else { 
    469471                        set_parameters ( dimx, V, nu ); 
     472                        validate(); 
    470473                } 
    471474        } 
     
    479482 
    480483        void validate() { 
    481                 // check sizes, rvs etc. 
     484        dim = dimx * ( dimx + nPsi );    
     485         
     486            // check sizes, rvs etc. 
    482487                // also check if RV are meaningful!!! 
    483488                // meaningful =  rv for theta  and rv for r are split! 
     
    510515        eDirich ( const eDirich &D0 ) : eEF () { 
    511516                set_parameters ( D0.beta ); 
     517                validate(); 
    512518        }; 
    513519        eDirich ( const vec &beta0 ) { 
    514520                set_parameters ( beta0 ); 
     521                validate(); 
    515522        }; 
    516523        void set_parameters ( const vec &beta0 ) { 
     
    718725        egamma ( const vec &a, const vec &b ) { 
    719726                set_parameters ( a, b ); 
     727                validate(); 
    720728        }; 
    721729        void set_parameters ( const vec &a, const vec &b ) { 
    722730                alpha = a, beta = b; 
    723                 dim = alpha.length(); 
    724731        }; 
    725732        //!@} 
     
    845852                nk = prod ( 1.0 / distance ); 
    846853                lnk = log ( nk ); 
    847                 dim = low.length(); 
    848854        } 
    849855        //!@} 
     
    909915                UI::get ( delta, set, "delta", UI::compulsory ); 
    910916                mean = UI::build<fnc> ( set, "mean", UI::compulsory ); 
    911  
    912917                iepdf.set_parameters ( -delta, delta ); 
     918        } 
     919         
     920        void validate(){ 
    913921                dimc = mean->dimensionc(); 
    914                 validate(); 
    915         } 
     922                iepdf.validate(); 
     923        } 
     924 
    916925}; 
    917926UIREGISTER ( mguni ); 
     
    935944        mlnorm ( const mat &A, const vec &mu0, const sq_T &R ) : pdf_internal< TEpdf<sq_T> >() { 
    936945                set_parameters ( A, mu0, R ); 
     946                validate(); 
    937947        } 
    938948 
     
    942952                A = A0; 
    943953                mu_const = mu0; 
    944                 this->dimc = A0.cols(); 
    945         } 
     954        } 
     955 
    946956        //!@} 
    947957        //! Set value of \c rvc . Result of this operation is stored in \c epdf use function \c _ep to access it. 
     
    10021012                bdm_assert ( A.rows() == mu_const.length(), "mlnorm: A vs. mu mismatch" ); 
    10031013                bdm_assert ( A.rows() == _R().rows(), "mlnorm: A vs. R mismatch" ); 
     1014                this->dimc = A.cols(); 
    10041015 
    10051016        } 
     
    10611072        void validate() { 
    10621073                bdm_assert ( g->dimension() == this->dimension(), "incompatible function" ); 
     1074                this->dim = g->dimension(); 
     1075                this->dimc = g->dimensionc(); 
     1076                this->iepdf.validate(); 
    10631077        } 
    10641078}; 
     
    12021216        void set_parameters ( int len, double k0 ) { 
    12031217                k = k0; 
    1204                 iepdf.set_parameters ( ( 1.0 / ( k*k ) + 2.0 ) *ones ( len ) /*alpha*/, ones ( len ) /*beta*/ ); 
     1218                iepdf.set_parameters ( ( 1.0 / ( k*k ) + 2.0 ) *ones ( len ) /*alpha*/, ones ( len ) /*beta*/ );                 
     1219        }; 
     1220 
     1221        void    validate (){ 
     1222                iepdf.validate(); 
    12051223                dimc = dimension(); 
    1206         }; 
     1224}; 
     1225 
    12071226        void condition ( const vec &val ) { 
    12081227                _beta = elem_mult ( val, ( _alpha - 1.0 ) ); 
     
    12351254                mgamma::set_parameters ( k0, ref0 ); 
    12361255                refl = pow ( ref0, 1.0 - l0 ); 
    1237                 l = l0; 
     1256                l = l0;  
     1257        }; 
     1258 
     1259        void    validate (){ 
     1260                mgamma::validate(); 
    12381261                dimc = dimension(); 
    12391262        }; 
     
    12731296                refl = pow ( ref0, 1.0 - l0 ); 
    12741297                l = l0; 
     1298        }; 
     1299 
     1300        void validate(){ 
     1301                migamma::validate(); 
    12751302                dimc = dimension(); 
    12761303        }; 
    1277  
     1304         
    12781305        void condition ( const vec &val ) { 
    12791306                vec mean = elem_mult ( refl, pow ( val, l ) ); 
     
    13491376                sig2 = 0.5 * log ( k * k + 1 ); 
    13501377                iepdf.set_parameters ( zeros ( size ), 2*sig2*eye ( size ) ); 
    1351  
    1352                 dimc = size; 
    1353         }; 
     1378        }; 
     1379         
     1380        void validate(){ 
     1381                iepdf.validate(); 
     1382                dimc = iepdf.dimension(); 
     1383        } 
    13541384 
    13551385        void condition ( const vec &val ) { 
     
    13931423                Y = chmat ( Y0 ); 
    13941424                delta = delta0; 
    1395                 p = Y.rows(); 
    1396                 dim = p * p; 
     1425                p = Y.rows();    
    13971426        } 
    13981427        //! Set internal structures 
     
    14011430                delta = delta0; 
    14021431                p = Y.rows(); 
     1432                } 
     1433         
     1434        virtual void validate (){ 
    14031435                dim = p * p; 
    14041436        } 
     1437 
    14051438        //! Sample matrix argument 
    14061439        mat sample_mat() const { 
     
    14701503         
    14711504        virtual void    validate (){ 
    1472       dim = W.dimension(); 
     1505                W.validate(); 
     1506                dim = W.dimension(); 
    14731507        } 
    14741508         
     
    15401574                l = l0; 
    15411575                refl = pow ( ref0, 1 - l ); 
    1542  
    15431576                iepdf.set_parameters ( eye ( p ), delta ); 
     1577        }; 
     1578         
     1579        void validate(){ 
     1580                iepdf.validate(); 
    15441581                dimc = iepdf.dimension(); 
    15451582        } 
     1583         
    15461584        void condition ( const vec &c ) { 
    15471585                vec z = c; 
     
    18411879void mgnorm<sq_T >::set_parameters ( const shared_ptr<fnc> &g0, const sq_T &R0 ) { 
    18421880        g = g0; 
    1843         this->dim = g->dimension(); 
    1844         this->dimc = g->dimensionc(); 
    18451881        this->iepdf.set_parameters ( zeros ( g->dimension() ), R0 ); 
    18461882}