6 #include <cpExtensions/Algorithms/IterativeGaussianModelEstimator.h>
8 // -------------------------------------------------------------------------
9 const unsigned int Dim = 1;
10 typedef double TScalar;
12 cpExtensions::Algorithms::
13 IterativeGaussianModelEstimator< TScalar, Dim > TEstimator;
15 // -------------------------------------------------------------------------
16 int main( int argc, char* argv[] )
20 std::cerr << "Usage: " << argv[ 0 ] << " mean std samples" << std::endl;
24 TScalar mean = std::atof( argv[ 1 ] );
25 TScalar var = std::atof( argv[ 2 ] );
26 unsigned int samples = std::atoi( argv[ 3 ] );
30 TEstimator::Pointer estimator = TEstimator::New( );
34 std::seed_seq seed{ r( ), r( ), r( ), r( ), r( ), r( ), r( ), r( ) };
35 std::mt19937 e( seed );
36 std::normal_distribution< > dist( mean, std::sqrt( var ) );
37 double local_mean = double( 0 );
38 std::vector< double > data;
39 for( unsigned int s = 0; s < samples; ++s )
42 estimator->AddSample( v );
47 local_mean /= double( samples );
49 double local_var = double( 0 );
50 for( auto d = data.begin( ); d != data.end( ); ++d )
51 local_var += ( *d - local_mean ) * ( *d - local_mean );
52 local_var /= double( samples - 1 );
58 << estimator->GetMean( )[ 0 ] << " <-> "
64 << estimator->GetCovariance( )[ 0 ][ 0 ] << " <-> "
65 << estimator->GetUnbiasedCovariance( )[ 0 ][ 0 ] << " <-> "
69 std::cout << "--------------------------------------" << std::endl;
70 for( unsigned int s = 0; s < 15; ++s )
73 double d = std::sqrt( estimator->SquaredMahalanobis( v ) );
74 std::cout << "Distante to " << v << " is " << d << std::endl;