Statistics
| Revision:

svn-gvsig-desktop / branches / org.gvsig.desktop-2018a / org.gvsig.desktop.library / org.gvsig.raster / org.gvsig.raster.lib / org.gvsig.raster.lib.buffer.impl / src / main / java / org / gvsig / raster / lib / buffer / impl / statistics / VarianceOperation.java @ 43803

History | View | Annotate | Download (978 Bytes)

1
package org.gvsig.raster.lib.buffer.impl.statistics;
2

    
3
import org.gvsig.raster.lib.buffer.api.statistics.StatisticsBand;
4

    
5

    
6
/**
7
 * @author fdiaz
8
 *
9
 */
10
public class VarianceOperation implements StatisticalOperation {
11

    
12
    double sigmaSquare;
13
    long n;
14
    double mean;
15
    double variance;
16

    
17
    /**
18
     * Variance
19
     *
20
     * @param mean
21
     */
22
    public VarianceOperation(StatisticsBand statisticsBand) {
23
        sigmaSquare = 0;
24
        n = 0;
25
        this.mean = statisticsBand.getMean();
26
    }
27

    
28
    @Override
29
    public void pre() {
30
        //do nothing
31
        }
32

    
33
    @Override
34
    public void addValue(Number value) {
35
        double doubleValue = value.doubleValue();
36

    
37
        sigmaSquare += Math.pow(doubleValue-this.mean,2);
38
        n++;
39
    }
40

    
41
    @Override
42
    public void post() {
43
        variance = 0.0;
44
        if (n > 1L) {
45
            variance = sigmaSquare/n;
46
        }
47
    }
48

    
49
    @Override
50
    public Object getResult() {
51
        return variance;
52
    }
53

    
54
}