c_distinct.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*!
  2. \file cluster/c_distinct.c
  3. \brief Cluster library - Distinct value
  4. (C) 2001-2009 by the GRASS Development Team
  5. This program is free software under the GNU General Public License
  6. (>=v2). Read the file COPYING that comes with GRASS for details.
  7. \author Original author CERL
  8. */
  9. #include <grass/cluster.h>
  10. /*!
  11. \brief Get distinct value
  12. \param C pointer to Cluster structure
  13. \param separation separation value
  14. \return distinction value
  15. */
  16. int I_cluster_distinct(struct Cluster *C, double separation)
  17. {
  18. int class1, class2;
  19. int distinct;
  20. double dmin;
  21. double dsep;
  22. /* compute sum of squares for each class */
  23. I_cluster_sum2(C);
  24. /* find closest classes */
  25. distinct = 1;
  26. dmin = separation;
  27. for (class1 = 0; class1 < (C->nclasses - 1); class1++) {
  28. if (C->count[class1] < 2)
  29. continue;
  30. for (class2 = class1 + 1; class2 < C->nclasses; class2++) {
  31. if (C->count[class2] < 2)
  32. continue;
  33. dsep = I_cluster_separation(C, class1, class2);
  34. if (dsep >= 0.0 && dsep < dmin) {
  35. distinct = 0;
  36. C->merge1 = class1;
  37. C->merge2 = class2;
  38. dmin = dsep;
  39. }
  40. }
  41. }
  42. return distinct;
  43. }