KLDistance.cpp 792 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /**
  2. * @file KLDistance.cpp
  3. * @brief $\chi^2$ distance measure
  4. * @author Erik Rodner
  5. * @date 02/19/2008
  6. */
  7. #ifdef NOVISUAL
  8. #include <vislearning/nice_nonvis.h>
  9. #else
  10. #include <vislearning/nice.h>
  11. #endif
  12. #include <iostream>
  13. #include "vislearning/math/distances/KLDistance.h"
  14. using namespace OBJREC;
  15. using namespace std;
  16. // refactor-nice.pl: check this substitution
  17. // old: using namespace ice;
  18. using namespace NICE;
  19. double DeprecatedKLDistance::doCalculate (const NICE::Vector & x, const NICE::Vector & y) const
  20. {
  21. double dist = 0.0;
  22. for ( int i = 0 ; i < (int)x.size() ; i++ )
  23. {
  24. double u = x[i];
  25. double v = y[i];
  26. if ( fabs(u) < 10e-6 ) continue;
  27. if ( fabs(v) < 10e-6 ) v = 10e-6;
  28. dist += u * log ( u / v );
  29. }
  30. if ( dist < 0.0 ) dist = 0.0;
  31. return dist;
  32. }