org.apache.commons.math3.optimization.fitting
Class GaussianFitter.ParameterGuesser

java.lang.Object
  extended by org.apache.commons.math3.optimization.fitting.GaussianFitter.ParameterGuesser
Enclosing class:
GaussianFitter

public static class GaussianFitter.ParameterGuesser
extends Object

Guesses the parameters norm, mean, and sigma of a Gaussian.Parametric based on the specified observed points.


Field Summary
private  WeightedObservedPoint[] observations
          Observed points.
private  double[] parameters
          Resulting guessed parameters.
 
Constructor Summary
GaussianFitter.ParameterGuesser(WeightedObservedPoint[] observations)
          Constructs instance with the specified observed points.
 
Method Summary
private  double[] basicGuess(WeightedObservedPoint[] points)
          Guesses the parameters based on the specified observed points.
private  Comparator<WeightedObservedPoint> createWeightedObservedPointComparator()
          Factory method creating Comparator for comparing WeightedObservedPoint instances.
private  int findMaxY(WeightedObservedPoint[] points)
          Finds index of point in specified points with the largest Y.
private  WeightedObservedPoint[] getInterpolationPointsForY(WeightedObservedPoint[] points, int startIdx, int idxStep, double y)
          Gets the two bounding interpolation points from the specified points suitable for determining X at the specified Y.
 double[] guess()
          Guesses the parameters based on the observed points.
private  double interpolateXAtY(WeightedObservedPoint[] points, int startIdx, int idxStep, double y)
          Interpolates using the specified points to determine X at the specified Y.
private  boolean isBetween(double value, double boundary1, double boundary2)
          Determines whether a value is between two other values.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

observations

private final WeightedObservedPoint[] observations
Observed points.


parameters

private double[] parameters
Resulting guessed parameters.

Constructor Detail

GaussianFitter.ParameterGuesser

public GaussianFitter.ParameterGuesser(WeightedObservedPoint[] observations)
Constructs instance with the specified observed points.

Parameters:
observations - observed points upon which should base guess
Method Detail

guess

public double[] guess()
Guesses the parameters based on the observed points.

Returns:
the guessed parameters: norm, mean and sigma.

basicGuess

private double[] basicGuess(WeightedObservedPoint[] points)
Guesses the parameters based on the specified observed points.

Parameters:
points - Observed points upon which should base guess.
Returns:
the guessed parameters: norm, mean and sigma.

findMaxY

private int findMaxY(WeightedObservedPoint[] points)
Finds index of point in specified points with the largest Y.

Parameters:
points - Points to search.
Returns:
the index in specified points array.

interpolateXAtY

private double interpolateXAtY(WeightedObservedPoint[] points,
                               int startIdx,
                               int idxStep,
                               double y)
                        throws OutOfRangeException
Interpolates using the specified points to determine X at the specified Y.

Parameters:
points - Points to use for interpolation.
startIdx - Index within points from which to start search for interpolation bounds points.
idxStep - Index step for search for interpolation bounds points.
y - Y value for which X should be determined.
Returns:
the value of X at the specified Y.
Throws:
ZeroException - if idxStep is 0.
OutOfRangeException - if specified y is not within the range of the specified points.

getInterpolationPointsForY

private WeightedObservedPoint[] getInterpolationPointsForY(WeightedObservedPoint[] points,
                                                           int startIdx,
                                                           int idxStep,
                                                           double y)
                                                    throws OutOfRangeException
Gets the two bounding interpolation points from the specified points suitable for determining X at the specified Y.

Parameters:
points - Points to use for interpolation.
startIdx - Index within points from which to start search for interpolation bounds points.
idxStep - Index step for search for interpolation bounds points.
y - Y value for which X should be determined.
Returns:
the array containing two points suitable for determining X at the specified Y.
Throws:
ZeroException - if idxStep is 0.
OutOfRangeException - if specified y is not within the range of the specified points.

isBetween

private boolean isBetween(double value,
                          double boundary1,
                          double boundary2)
Determines whether a value is between two other values.

Parameters:
value - Value to determine whether is between boundary1 and boundary2.
boundary1 - One end of the range.
boundary2 - Other end of the range.
Returns:
true if value is between boundary1 and boundary2 (inclusive), false otherwise.

createWeightedObservedPointComparator

private Comparator<WeightedObservedPoint> createWeightedObservedPointComparator()
Factory method creating Comparator for comparing WeightedObservedPoint instances.

Returns:
the new Comparator instance.


Copyright (c) 2003-2013 Apache Software Foundation