Package org.apache.commons.math3.fitting
Class GaussianCurveFitter.ParameterGuesser
java.lang.Object
org.apache.commons.math3.fitting.GaussianCurveFitter.ParameterGuesser
- Enclosing class:
GaussianCurveFitter
Guesses the parameters
norm
, mean
, and sigma
of a Gaussian.Parametric
based on the specified observed points.-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionParameterGuesser
(Collection<WeightedObservedPoint> observations) Constructs instance with the specified observed points. -
Method Summary
Modifier and TypeMethodDescriptionprivate 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 List
<WeightedObservedPoint> sortObservations
(Collection<WeightedObservedPoint> unsorted) Sort the observations.
-
Field Details
-
norm
private final double normNormalization factor. -
mean
private final double meanMean. -
sigma
private final double sigmaStandard deviation.
-
-
Constructor Details
-
ParameterGuesser
Constructs instance with the specified observed points.- Parameters:
observations
- Observed points from which to guess the parameters of the Gaussian.- Throws:
NullArgumentException
- ifobservations
isnull
.NumberIsTooSmallException
- if there are less than 3 observations.
-
-
Method Details
-
guess
public double[] guess()Gets an estimation of the parameters.- Returns:
- the guessed parameters, in the following order:
- Normalization factor
- Mean
- Standard deviation
-
sortObservations
Sort the observations.- Parameters:
unsorted
- Input observations.- Returns:
- the input observations, sorted.
-
basicGuess
Guesses the parameters based on the specified observed points.- Parameters:
points
- Observed points, sorted.- Returns:
- the guessed parameters (normalization factor, mean and sigma).
-
findMaxY
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 the search for interpolation bounds points.idxStep
- Index step for searching interpolation bounds points.y
- Y value for which X should be determined.- Returns:
- the value of X for the specified Y.
- Throws:
ZeroException
- ifidxStep
is 0.OutOfRangeException
- if specifiedy
is not within the range of the specifiedpoints
.
-
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
- ifidxStep
is 0.OutOfRangeException
- if specifiedy
is not within the range of the specifiedpoints
.
-
isBetween
private boolean isBetween(double value, double boundary1, double boundary2) Determines whether a value is between two other values.- Parameters:
value
- Value to test whether it is betweenboundary1
andboundary2
.boundary1
- One end of the range.boundary2
- Other end of the range.- Returns:
true
ifvalue
is betweenboundary1
andboundary2
(inclusive),false
otherwise.
-