Class PiecewiseBicubicSplineInterpolatingFunction
java.lang.Object
org.apache.commons.math3.analysis.interpolation.PiecewiseBicubicSplineInterpolatingFunction
- All Implemented Interfaces:
BivariateFunction
public class PiecewiseBicubicSplineInterpolatingFunction
extends Object
implements BivariateFunction
Function that implements the
bicubic spline
interpolation.
This implementation currently uses
AkimaSplineInterpolator
as the
underlying one-dimensional interpolator, which requires 5 sample points;
insufficient data will raise an exception when the
value
method is called.- Since:
- 3.4
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final double[][]
Set of cubic splines patching the whole data gridprivate static final int
The minimum number of points that are needed to compute the function.private final double[]
Samples x-coordinatesprivate final double[]
Samples y-coordinates -
Constructor Summary
ConstructorsConstructorDescriptionPiecewiseBicubicSplineInterpolatingFunction
(double[] x, double[] y, double[][] f) -
Method Summary
Modifier and TypeMethodDescriptionboolean
isValidPoint
(double x, double y) Indicates whether a point is within the interpolation range.private int
searchIndex
(double c, double[] val, int offset, int count) double
value
(double x, double y) Compute the value for the function.
-
Field Details
-
MIN_NUM_POINTS
private static final int MIN_NUM_POINTSThe minimum number of points that are needed to compute the function.- See Also:
-
xval
private final double[] xvalSamples x-coordinates -
yval
private final double[] yvalSamples y-coordinates -
fval
private final double[][] fvalSet of cubic splines patching the whole data grid
-
-
Constructor Details
-
PiecewiseBicubicSplineInterpolatingFunction
public PiecewiseBicubicSplineInterpolatingFunction(double[] x, double[] y, double[][] f) throws DimensionMismatchException, NullArgumentException, NoDataException, NonMonotonicSequenceException - Parameters:
x
- Sample values of the x-coordinate, in increasing order.y
- Sample values of the y-coordinate, in increasing order.f
- Values of the function on every grid point. the expected number of elements.- Throws:
NonMonotonicSequenceException
- ifx
ory
are not strictly increasing.NullArgumentException
- if any of the arguments are nullNoDataException
- if any of the arrays has zero length.DimensionMismatchException
- if the length of x and y don't match the row, column height of f
-
-
Method Details
-
value
Compute the value for the function.- Specified by:
value
in interfaceBivariateFunction
- Parameters:
x
- Abscissa for which the function value should be computed.y
- Ordinate for which the function value should be computed.- Returns:
- the value.
- Throws:
OutOfRangeException
-
isValidPoint
public boolean isValidPoint(double x, double y) Indicates whether a point is within the interpolation range.- Parameters:
x
- First coordinate.y
- Second coordinate.- Returns:
true
if (x, y) is a valid point.- Since:
- 3.3
-
searchIndex
private int searchIndex(double c, double[] val, int offset, int count) - Parameters:
c
- Coordinate.val
- Coordinate samples.offset
- how far back from found value to offset for queryingcount
- total number of elements forward from beginning that will be queried- Returns:
- the index in
val
corresponding to the interval containingc
. - Throws:
OutOfRangeException
- ifc
is out of the range defined by the boundary values ofval
.
-