GRASS Programmer's Manual  6.4.2(2012)
c_means.c
Go to the documentation of this file.
00001 #include <math.h>
00002 #include <grass/cluster.h>
00003 
00004 int I_cluster_means(struct Cluster *C)
00005 {
00006     int band;
00007     int class;
00008     double m, v;                /* m=mean, v=variance then std dev */
00009     double s;
00010 
00011     /*
00012        fprintf(stderr,"I_cluster_means(nbands=%d,nclasses=%d)\n",C->nbands, C->nclasses);
00013      */
00014     for (band = 0; band < C->nbands; band++) {
00015         s = C->band_sum[band];
00016         m = s / C->npoints;
00017         v = C->band_sum2[band] - s * m;
00018         v = sqrt(v / (C->npoints - 1));
00019         for (class = 0; class < C->nclasses; class++)
00020             C->mean[band][class] = m;
00021         if (C->nclasses > 1)
00022             for (class = 0; class < C->nclasses; class++)
00023                 C->mean[band][class] +=
00024                     ((2.0 * class) / (C->nclasses - 1) - 1.0) * v;
00025     }
00026 
00027     return 0;
00028 }
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines