Example usage for org.apache.commons.math3.stat.descriptive.summary Sum evaluate

List of usage examples for org.apache.commons.math3.stat.descriptive.summary Sum evaluate

Introduction

In this page you can find the example usage for org.apache.commons.math3.stat.descriptive.summary Sum evaluate.

Prototype

@Override
public double evaluate(final double[] values) throws MathIllegalArgumentException 

Source Link

Document

This default implementation calls #clear , then invokes #increment in a loop over the the input array, and then uses #getResult to compute the return value.

Usage

From source file:de.biomedical_imaging.ij.nanotrackj.WalkerMethodEstimator.java

private double[] getHistogramML(double[] pm) {
    double[] histMl = new double[histBinNumber];

    Sum sum = new Sum();
    for (int b = 0; b < histMl.length; b++) {
        double outersum = 0;
        for (int k = kMin; k <= kMax; k++) {
            double sumpm = sum.evaluate(pm);
            double innersum = 0;
            for (int m = 0; m < pm.length; m++) {
                innersum += (probMSD((b + 1) * deltaB, k, (m + 1) * deltaR) * deltaB * pm[m]) / sumpm;
            }/* w w  w. j  av a2s. co m*/
            outersum += Nk[k] * innersum;
        }
        histMl[b] = outersum;
    }
    return histMl;
}

From source file:fiji.plugin.trackmate.action.brownianmotion.WalkerMethodEstimator.java

private double[] getHistogramML(double[] pm) {
    double[] histMl = new double[histBinNumber];

    Sum sum = new Sum();
    for (int b = 0; b < histMl.length; b++) {
        double outersum = 0;
        for (int k = minTrackLength; k <= maxTrackLength; k++) {
            double sumpm = sum.evaluate(pm);
            double innersum = 0;
            for (int m = 0; m < pm.length; m++) {
                innersum += (probMSD((b + 1) * deltaB, k, (m + 1) * deltaR) * deltaB * pm[m]) / sumpm;
            }//from   ww w. j  av  a 2 s  . c o  m
            outersum += Nk[k] * innersum;
        }
        histMl[b] = outersum;
    }
    return histMl;
}

From source file:de.biomedical_imaging.ij.nanotrackj.WalkerMethodEstimator.java

/**
 * /*from www. ja  v a 2s.co  m*/
 * @return Histogram [i][j]: i = bin, j = density
 */
public double[][] estimate() {

    double[] dens = new double[binNumber];
    java.util.Arrays.fill(dens, 1.0 / binNumber);
    Sum sum = new Sum();
    //IJ.log(""+dens[2]);
    lastChiSquared = getChiSquared(dens);
    double changeChiSquared = Double.MAX_VALUE;
    IJ.showStatus("Size Distribution Estimation by Walker's Method");
    while (changeChiSquared > 0.01) {

        IJ.showProgress((int) ((1 - changeChiSquared) * 100), 99);
        for (int m = 0; m < dens.length; m++) {
            double sumpm = sum.evaluate(dens);
            double help2 = 0;

            for (int k = 0; k < data.length; k++) {
                double help1 = 0;
                double prob = probMSD(data[k][0], data[k][1], (m + 1) * deltaR);

                for (int l = 0; l < dens.length; l++) {
                    double prob2 = probMSD(data[k][0], data[k][1], (l + 1) * deltaR);
                    help1 += prob2 * dens[l] / sumpm;
                }
                help2 = help2 + prob / help1;
            }
            dens[m] = dens[m] * 1.0 / data.length * help2;
        }
        double newChiSquared = getChiSquared(dens);
        changeChiSquared = Math.abs(newChiSquared - lastChiSquared) / lastChiSquared;
        lastChiSquared = newChiSquared;
    }
    IJ.showProgress(99, 99);

    //Normalize
    double sumdens = sum.evaluate(dens);
    double[][] densxy = new double[dens.length][2];
    for (int i = 0; i < dens.length; i++) {
        densxy[i][0] = binSizeInnm * (i + 1) * 2.0; //To Diamter in [nm]
        dens[i] = dens[i] / sumdens; //Normalize
        densxy[i][1] = dens[i];

    }

    return densxy;

}