Example usage for org.apache.commons.math.distribution NormalDistributionImpl NormalDistributionImpl

List of usage examples for org.apache.commons.math.distribution NormalDistributionImpl NormalDistributionImpl

Introduction

In this page you can find the example usage for org.apache.commons.math.distribution NormalDistributionImpl NormalDistributionImpl.

Prototype

public NormalDistributionImpl(double mean, double sd, double inverseCumAccuracy) 

Source Link

Document

Create a normal distribution using the given mean, standard deviation and inverse cumulative distribution accuracy.

Usage

From source file:org.smurn.jsift.GaussianFilter.java

/**
 * Builds a one dimensional gaussian kernel.
 * @param sigma Standard deviation of the kernel.
 * @return Discretized kernel. Array length is odd, kernel is centered.
 */// www  . j  av a2s  .c  o  m
private static double[] buildKernel(final double sigma) {

    int windowSize = (int) Math.ceil(WINDOW_SIZE_FACTOR * sigma);

    NormalDistributionImpl ndist = new NormalDistributionImpl(0.0, sigma, PRECISION);

    double[] kernel = new double[2 * windowSize + 1];
    double sum = 0;
    try {
        for (int i = 0; i < kernel.length; i++) {
            double x = i - windowSize;
            kernel[i] = ndist.cumulativeProbability(x - 0.5, x + 0.5);
            sum += kernel[i];
        }
    } catch (MathException ex) {
        throw new RuntimeException(ex);
    }
    for (int i = 0; i < kernel.length; i++) {
        kernel[i] /= sum;
    }

    return kernel;
}