12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /**
- * @file PDFDirichlet.cpp
- * @brief Normal Distribution / Gaussian PDF
- * @author Erik Rodner
- * @date 01/29/2008
- */
- #include <iostream>
- #include "vislearning/math/pdf/PDFDirichlet.h"
- #include "vislearning/math/pdf/gslRandomNumberGenerator.h"
- using namespace OBJREC;
- using namespace std;
- // refactor-nice.pl: check this substitution
- // old: using namespace ice;
- using namespace NICE;
- PDFDirichlet::PDFDirichlet( double _alpha, int dimension ) : alpha(dimension)
- {
- for ( int i = 0 ; i < dimension ; i++ )
- alpha[i] = _alpha / dimension;
- }
- // refactor-nice.pl: check this substitution
- // old: PDFDirichlet::PDFDirichlet ( const Vector & _alpha ) : alpha(_alpha)
- PDFDirichlet::PDFDirichlet ( const NICE::Vector & _alpha ) : alpha(_alpha)
- {
- }
- PDFDirichlet::~PDFDirichlet()
- {
- }
- // refactor-nice.pl: check this substitution
- // old: double PDFDirichlet::getNLogDensity ( const Vector & x ) const
- double PDFDirichlet::getNLogDensity ( const NICE::Vector & x ) const
- {
- #ifdef NICE_USELIB_GSL
- return gsl_ran_dirichlet_lnpdf ( alpha.size(), alpha.getDataPointerConst(), x.getDataPointerConst() );
- #else
- #warning "PDFDirichlet::getNLogDensity: this function needs the GNU Scientific Library"
- fprintf (stderr, "PDFDirichlet::getNLogDensity: this function needs the GNU Scientific Library\n");
- exit(-1);
- return 0.0;
- #endif
- }
- // refactor-nice.pl: check this substitution
- // old: double PDFDirichlet::getProb ( const Vector & x ) const
- double PDFDirichlet::getProb ( const NICE::Vector & x ) const
- {
- #ifdef NICE_USELIB_GSL
- return gsl_ran_dirichlet_pdf ( alpha.size(), alpha.getDataPointerConst(), x.getDataPointerConst() );
- #else
- #warning "PDFDirichlet::getProb: this function needs the GNU Scientific Library"
- fprintf (stderr, "PDFDirichlet::getProb: this function needs the GNU Scientific Library\n");
- exit(-1);
- return 0.0;
- #endif
- }
- int PDFDirichlet::getDimension () const
- {
- return alpha.size();
- }
- void PDFDirichlet::sample ( VVector & samples, int count ) const
- {
- #ifdef NICE_USELIB_GSL
- initGSLRandom();
- for ( int i = 0 ; i < count ; i++ )
- {
- // refactor-nice.pl: check this substitution
- // old: Vector x ( alpha.size() );
- NICE::Vector x ( alpha.size() );
- gsl_ran_dirichlet (randomGSL, alpha.size(), alpha.getDataPointerConst(), x.getDataPointer() );
- samples.push_back ( x );
- }
- #else
- #warning "PDFDirichlet::sample: this function needs the GNU Scientific Library"
- fprintf (stderr, "PDFDirichlet::sample: this function needs the GNU Scientific Library\n");
- exit(-1);
- #endif
- }
|