c_distinct.c 727 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include <grass/cluster.h>
  2. int I_cluster_distinct(struct Cluster *C, double separation)
  3. {
  4. int class1, class2;
  5. int distinct;
  6. double dmin;
  7. double dsep;
  8. /* compute sum of squares for each class */
  9. I_cluster_sum2(C);
  10. /* find closest classes */
  11. distinct = 1;
  12. dmin = separation;
  13. for (class1 = 0; class1 < (C->nclasses - 1); class1++) {
  14. if (C->count[class1] < 2)
  15. continue;
  16. for (class2 = class1 + 1; class2 < C->nclasses; class2++) {
  17. if (C->count[class2] < 2)
  18. continue;
  19. dsep = I_cluster_separation(C, class1, class2);
  20. if (dsep >= 0.0 && dsep < dmin) {
  21. distinct = 0;
  22. C->merge1 = class1;
  23. C->merge2 = class2;
  24. dmin = dsep;
  25. }
  26. }
  27. }
  28. return distinct;
  29. }