1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5 #include <fpa/Common/IncrementalMeanAndVariance.h>
8 // -------------------------------------------------------------------------
9 fpa::Common::IncrementalMeanAndVariance::
10 IncrementalMeanAndVariance( )
15 // -------------------------------------------------------------------------
16 fpa::Common::IncrementalMeanAndVariance::
17 ~IncrementalMeanAndVariance( )
21 // -------------------------------------------------------------------------
22 double fpa::Common::IncrementalMeanAndVariance::
28 // -------------------------------------------------------------------------
29 double fpa::Common::IncrementalMeanAndVariance::
35 // -------------------------------------------------------------------------
36 double fpa::Common::IncrementalMeanAndVariance::
39 return( std::sqrt( this->m_V ) );
42 // -------------------------------------------------------------------------
43 unsigned long fpa::Common::IncrementalMeanAndVariance::
44 GetNumberOfSamples( ) const
46 return( ( unsigned long )( this->m_N ) );
49 // -------------------------------------------------------------------------
50 void fpa::Common::IncrementalMeanAndVariance::
53 this->m_M = double( 0 );
54 this->m_V = double( 0 );
55 this->m_N = double( 0 );
58 // -------------------------------------------------------------------------
59 void fpa::Common::IncrementalMeanAndVariance::
62 this->m_N += double( 1 );
63 double d = v - this->m_M;
64 if( this->m_N > double( 1 ) )
66 double o = ( this->m_N - double( 2 ) ) / ( this->m_N - double( 1 ) );
67 this->m_V = ( o * this->m_V ) + ( ( d * d ) / this->m_N );
70 this->m_V = double( 0 );
71 this->m_M += d / this->m_N;