Changeset 229 for bdm/estim

Show
Ignore:
Timestamp:
01/15/09 10:53:54 (15 years ago)
Author:
smidl
Message:

epdf has a new function: variance()

Location:
bdm/estim
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • bdm/estim/ekf_templ.h

    r141 r229  
    2929}; 
    3030 
     31//!Extended Kalman filter in Choleski form with unknown \c Q 
     32class EKFCh_unQ : public EKFCh , public BMcond { 
     33public: 
     34        //! Default constructor 
     35        EKFCh_unQ ( RV rx, RV ry,RV ru,RV rQ ) :EKFCh ( rx,ry,ru ),BMcond ( rQ ) {}; 
     36        void condition ( const vec &Q0 ) { 
     37                Q.setD ( Q0,0 ); 
     38                //from EKF 
     39                preA.set_submatrix ( dimy+dimx,dimy,Q._Ch() ); 
     40        }; 
     41}; 
    3142 
    3243#endif //EKF_TEMP_H 
  • bdm/estim/libPF.h

    r225 r229  
    8888                        // ugly 
    8989                        vec pom=zeros ( ( Coms ( 0 )->_rv() ).count() ); 
    90  
    9190                        for ( int i=0; i<_w.length(); i++ ) {pom += Coms ( i )->mean() * _w ( i );} 
    92  
    9391                        return concat ( E.mean(),pom ); 
     92                } 
     93                vec variance() const { 
     94                        // ugly 
     95                        vec pom=zeros ( ( Coms ( 0 )->_rv() ).count() ); 
     96                        vec pom2=zeros ( ( Coms ( 0 )->_rv() ).count() ); 
     97                        for ( int i=0; i<_w.length(); i++ ) { 
     98                                pom += Coms ( i )->mean() * _w ( i ); 
     99                                pom2 += (Coms ( i )->variance() + pow(Coms(i)->mean(),2)) * _w ( i );} 
     100                        return concat ( E.variance(),pom2-pow(pom,2) ); 
    94101                } 
    95102 
  • bdm/estim/merger.h

    r211 r229  
    102102                return tmp; 
    103103        } 
    104         mat variance() const { 
     104        mat covariance() const { 
    105105                const vec &w = eSmp._w(); 
    106106                const Array<vec> &S = eSmp._samples(); 
     
    115115                } 
    116116                return Tmp-outer_product(mea,mea); 
     117        } 
     118        vec variance() const { 
     119                const vec &w = eSmp._w(); 
     120                const Array<vec> &S = eSmp._samples(); 
     121                 
     122                vec tmp=zeros(rv.count()); 
     123                for ( int i=0; i<Ns; i++ ) { 
     124                        tmp+=w ( i ) *pow(S ( i ),2); 
     125                } 
     126                return tmp-pow(mean(),2); 
    117127        } 
    118128//! for future use