GRASS 8 Programmer's Manual 8.6.0dev(2026)-4bb960b182
Loading...
Searching...
No Matches
c_means.c
Go to the documentation of this file.
1/*!
2 \file cluster/c_means.c
3
4 \brief Cluster library - Means value
5
6 SPDX-FileCopyrightText: 2001-2009 GRASS Development Team
7 SPDX-License-Identifier: GPL-2.0-or-later
8
9 \author Original author CERL
10 */
11
12#include <math.h>
13#include <grass/cluster.h>
14
15/*!
16 \brief Calculate means value
17
18 \param C pointer to Cluster structure
19
20 \return 0
21 */
23{
24 int band;
25 int class;
26 double m, v; /* m=mean, v=variance then std dev */
27 double s;
28
29 G_debug(3, "I_cluster_means(nbands=%d,nclasses=%d)", C->nbands,
30 C->nclasses);
31
32 for (band = 0; band < C->nbands; band++) {
33 s = C->band_sum[band];
34 m = s / C->npoints;
35 v = C->band_sum2[band] - s * m;
36 v = sqrt(v / (C->npoints - 1));
37 for (class = 0; class < C->nclasses; class++)
38 C->mean[band][class] = m;
39 if (C->nclasses > 1)
40 for (class = 0; class < C->nclasses; class++)
41 C->mean[band][class] +=
42 ((2.0 * class) / (C->nclasses - 1) - 1.0) * v;
43 }
44
45 return 0;
46}
int I_cluster_means(struct Cluster *C)
Calculate means value.
Definition c_means.c:22
int G_debug(int, const char *,...) __attribute__((format(printf
int npoints
Definition cluster.h:9
double * band_sum2
Definition cluster.h:14
int nclasses
Definition cluster.h:26
double ** mean
Definition cluster.h:23
double * band_sum
Definition cluster.h:13
int nbands
Definition cluster.h:8