ILNumerics Ultimate VS

NearestInterpolatorSingle Constructor

ILNumerics Ultimate VS Documentation
ILNumerics - Technical Application Development
Creates a Nearest Neighbor interpolation object, using specified points X, V and method(nearest, next or previous)

[ILNumerics Interpolation Toolbox]

Namespace:  ILNumerics.Toolboxes
Assembly:  ILNumerics.Toolboxes.Interpolation (in ILNumerics.Toolboxes.Interpolation.dll) Version: 5.5.0.0 (5.5.7503.3146)
Syntax

public NearestInterpolatorSingle(
	InArray<float> V,
	InArray<float> X,
	Nullable<float> outOfRangeValues = null,
	InterpolationMethod method = InterpolationMethod.nearest
)

Parameters

V
Type: ILNumericsInArraySingle
Given values. Vector of length m or n-dimensional array of size [m, l1, l2, ..., l_(n-1)].
X
Type: ILNumericsInArraySingle
Strictly monotonically increasing x coordinates. Vector or n-dimensional array with m elements.
outOfRangeValues (Optional)
Type: SystemNullableSingle
[Optional] Value to be assigned to all interpolation results outside of the domain specified by X. Default: (null) extrapolate.
method (Optional)
Type: ILNumerics.ToolboxesInterpolationMethod
[Optional] Next, Previous or Nearest neighbor interpolation method. Nearest is default.
Exceptions

ExceptionCondition
ArgumentExceptionIf arguments length X or V less than 2 elements
ArgumentExceptionIf argument X not ascending and distinct
ArgumentExceptionIf arguments X or V are specified not as vector or array.
ArgumentExceptionIf argument method is specified not as nearest, next or previous.
ArgumentNullExceptionIf any of input parameters are NULL
ArgumentExceptionIf arguments X or V have different size.
Remarks

This object should be used in a using block in order to clean up its resources after use.

For an input vector V, NearestInterpolatorSingle prepares a 1-dimensional, linear interpolation object, for the given set of m measured values. Subsequently, interpolated values can be derived by help of this object efficiently. After all values have been acquired, the object should be released in order to free its resources. Commonly, in .NET, the utiliziation of NearestInterpolatorSingle inside of a using directive is recommended.

Once created object could be reused to get interpolated values using Apply() method.

  • nearest - Nearest neighbor interpolation returns the corresponding sample point from V which is closest to a new query point. This method needs little computing ressources.
  • previous - returns the sample point left from a new query point; corresponds to the floor() function. For query points outside of the specified domain the nearest available sample point is returned. At least 2 samples are required in each dimension. This function requires little resources and performs at about the same speed as nearest.
  • next - returns the sample point from V which is right from a new query point; corresponds to the ceil() function. If no 'next' sample is available (for extrapolating query points) the sample at the right edge is returned. At least 2 samples are required in each dimension. This function needs little resources and performs with about the same speed as nearest and previous.

If V is provided as a matrix or a n-dim array, the columns of V are considered as m individual sets of measurements, all at the same positions as determined by X. It performs interpolation through the columns of sample values V. Each element requested in Apply(Xn) method will be interpolated for each column of V. In this case m becomes: V.S.NumberOfElements / V.S[0].

If V is defined as vector row or column with size m, number of elements X must be m

[ILNumerics Interpolation Toolbox]

Examples

// Define some sample points as a function: f(x) = sin(x);
Array<float> X = linspace<float>(-pi, pi, 10);
Array<float> V = sin(X);

// Create Interpolator Object
using (var interp = new NearestInterpolatorSingle(V, X, method:InterpolationMethod.next)) 
{ 
    // Get some random scalar values
    float val1 = (float)interp.Apply(0.024);
    float val2 = (float)interp.Apply(-0.21);

    // Get 10 linear spaced values defined on range (-0.5, 1.25)
    Array<float> valRange = interp.Apply(linspace<float>(-0.5, 1.25, 10));

    // Get 30 interpolated values using Xn query points defined as array[3 x 2 x 5]
    Array<float> Xn = counter(0.0, 0.1, 3, 2, 5);
    Array<float> Vn = interp.Apply(Xn);
}

See Also

Reference