public static class GaussianCurveFitter.ParameterGuesser
extends java.lang.Object
norm, mean, and sigma
of a Gaussian.Parametric
based on the specified observed points.| Modifier and Type | Field and Description |
|---|---|
private double |
mean
Mean.
|
private double |
norm
Normalization factor.
|
private double |
sigma
Standard deviation.
|
| Constructor and Description |
|---|
GaussianCurveFitter.ParameterGuesser(java.util.Collection<WeightedObservedPoint> observations)
Constructs instance with the specified observed points.
|
| Modifier and Type | Method and Description |
|---|---|
private double[] |
basicGuess(WeightedObservedPoint[] points)
Guesses the parameters based on the specified observed points.
|
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()
Gets an estimation of the parameters.
|
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.
|
private java.util.List<WeightedObservedPoint> |
sortObservations(java.util.Collection<WeightedObservedPoint> unsorted)
Sort the observations.
|
private final double norm
private final double mean
private final double sigma
public GaussianCurveFitter.ParameterGuesser(java.util.Collection<WeightedObservedPoint> observations)
observations - Observed points from which to guess the
parameters of the Gaussian.NullArgumentException - if observations is
null.NumberIsTooSmallException - if there are less than 3
observations.public double[] guess()
private java.util.List<WeightedObservedPoint> sortObservations(java.util.Collection<WeightedObservedPoint> unsorted)
unsorted - Input observations.private double[] basicGuess(WeightedObservedPoint[] points)
points - Observed points, sorted.private int findMaxY(WeightedObservedPoint[] points)
points - Points to search.private double interpolateXAtY(WeightedObservedPoint[] points, int startIdx, int idxStep, double y) throws OutOfRangeException
points - Points to use for interpolation.startIdx - Index within points from which to start the search for
interpolation bounds points.idxStep - Index step for searching interpolation bounds points.y - Y value for which X should be determined.ZeroException - if idxStep is 0.OutOfRangeException - if specified y is not within the
range of the specified points.private WeightedObservedPoint[] getInterpolationPointsForY(WeightedObservedPoint[] points, int startIdx, int idxStep, double y) throws OutOfRangeException
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.ZeroException - if idxStep is 0.OutOfRangeException - if specified y is not within the
range of the specified points.private boolean isBetween(double value,
double boundary1,
double boundary2)
value - Value to test whether it is between boundary1
and boundary2.boundary1 - One end of the range.boundary2 - Other end of the range.true if value is between boundary1 and
boundary2 (inclusive), false otherwise.Copyright (c) 2003-2015 Apache Software Foundation