1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /*!
- \file cluster/c_distinct.c
-
- \brief Cluster library - Distinct value
-
- (C) 2001-2009 by the GRASS Development Team
-
- This program is free software under the GNU General Public License
- (>=v2). Read the file COPYING that comes with GRASS for details.
-
- \author Original author CERL
- */
- #include <grass/cluster.h>
- /*!
- \brief Get distinct value
- \param C pointer to Cluster structure
- \param separation separation value
- \return distinction value
- */
- int I_cluster_distinct(struct Cluster *C, double separation)
- {
- int class1, class2;
- int distinct;
- double dmin;
- double dsep;
- /* compute sum of squares for each class */
- I_cluster_sum2(C);
- /* find closest classes */
- distinct = 1;
- dmin = separation;
- for (class1 = 0; class1 < (C->nclasses - 1); class1++) {
- if (C->count[class1] < 2)
- continue;
- for (class2 = class1 + 1; class2 < C->nclasses; class2++) {
- if (C->count[class2] < 2)
- continue;
- dsep = I_cluster_separation(C, class1, class2);
- if (dsep >= 0.0 && dsep < dmin) {
- distinct = 0;
- C->merge1 = class1;
- C->merge2 = class2;
- dmin = dsep;
- }
- }
- }
- return distinct;
- }
|