GRASS Programmer's Manual
6.4.2(2012)
|
00001 #include <grass/cluster.h> 00002 00003 int I_cluster_distinct(struct Cluster *C, double separation) 00004 { 00005 int class1, class2; 00006 int distinct; 00007 double dmin; 00008 double dsep; 00009 00010 /* compute sum of squares for each class */ 00011 I_cluster_sum2(C); 00012 00013 /* find closest classes */ 00014 distinct = 1; 00015 dmin = separation; 00016 for (class1 = 0; class1 < (C->nclasses - 1); class1++) { 00017 if (C->count[class1] < 2) 00018 continue; 00019 for (class2 = class1 + 1; class2 < C->nclasses; class2++) { 00020 if (C->count[class2] < 2) 00021 continue; 00022 dsep = I_cluster_separation(C, class1, class2); 00023 00024 if (dsep >= 0.0 && dsep < dmin) { 00025 distinct = 0; 00026 C->merge1 = class1; 00027 C->merge2 = class2; 00028 dmin = dsep; 00029 } 00030 } 00031 } 00032 00033 return distinct; 00034 }