List of usage examples for org.apache.commons.math3.stat.descriptive.summary Sum evaluate
@Override public double evaluate(final double[] values) throws MathIllegalArgumentException
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; }