Class LinearInterpolator

java.lang.Object
org.rrd4j.data.Plottable
org.rrd4j.data.LinearInterpolator
All Implemented Interfaces:
IPlottable

public class LinearInterpolator extends Plottable

Class used to interpolate datasource values from the collection of (timestamp, values) points. This class is suitable for linear interpolation only.

Interpolation algorithm returns different values based on the value passed to setInterpolationMethod(). If not set, interpolation method defaults to standard linear interpolation (LinearInterpolator.Method.LINEAR). Interpolation method handles NaN datasource values gracefully.

  • Field Details

  • Constructor Details

    • LinearInterpolator

      public LinearInterpolator(long[] timestamps, double[] values)
      Creates LinearInterpolator from arrays of timestamps and corresponding datasource values.
      Parameters:
      timestamps - timestamps in seconds
      values - corresponding datasource values
      Throws:
      IllegalArgumentException - Thrown if supplied arrays do not contain at least two values, or if timestamps are not ordered, or array lengths are not equal.
    • LinearInterpolator

      public LinearInterpolator(Date[] dates, double[] values)
      Creates LinearInterpolator from arrays of timestamps and corresponding datasource values.
      Parameters:
      dates - Array of Date objects
      values - corresponding datasource values
      Throws:
      IllegalArgumentException - Thrown if supplied arrays do not contain at least two values, or if timestamps are not ordered, or array lengths are not equal.
    • LinearInterpolator

      public LinearInterpolator(Calendar[] dates, double[] values)
      Creates LinearInterpolator from arrays of timestamps and corresponding datasource values.
      Parameters:
      dates - array of GregorianCalendar objects
      values - corresponding datasource values
      Throws:
      IllegalArgumentException - Thrown if supplied arrays do not contain at least two values, or if timestamps are not ordered, or array lengths are not equal.
  • Method Details

    • setInterpolationMethod

      @Deprecated public void setInterpolationMethod(int interpolationMethod)
      Deprecated.

      Sets interpolation method to be used. Suppose that we have two timestamp/value pairs:
      (t, 100) and (t + 100, 300). Here are the results interpolator returns for t + 50 seconds, for various interpolationMethods:

      • INTERPOLATE_LEFT: 100
      • INTERPOLATE_RIGHT: 300
      • INTERPOLATE_LINEAR: 200

      If not set, interpolation method defaults to INTERPOLATE_LINEAR.

      The fourth available interpolation method is INTERPOLATE_REGRESSION. This method uses simple linear regression to interpolate supplied data with a simple straight line which does not necessarily pass through all data points. The slope of the best-fit line will be chosen so that the total square distance of real data points from from the best-fit line is at minimum.

      This method is deprecated, one should use setInterpolationMethod() instead.

      The full explanation of this interpolation method can be found here.

      Parameters:
      interpolationMethod - Should be INTERPOLATE_LEFT, INTERPOLATE_RIGHT, INTERPOLATE_LINEAR or INTERPOLATE_REGRESSION. Any other value will be interpreted as INTERPOLATE_LINEAR (default).
    • setInterpolationMethod

      public void setInterpolationMethod(LinearInterpolator.Method interpolationMethod)

      Sets interpolation method to be used. Suppose that we have two timestamp/value pairs:
      (t, 100) and (t + 100, 300). Here are the results interpolator returns for t + 50 seconds, for various interpolationMethods:

      • LEFT: 100
      • RIGHT: 300
      • LINEAR: 200

      If not set, interpolation method defaults to INTERPOLATE_LINEAR.

      The fourth available interpolation method is REGRESSION. This method uses simple linear regression to interpolate supplied data with a simple straight line which does not necessarily pass through all data points. The slope of the best-fit line will be chosen so that the total square distance of real data points from from the best-fit line is at minimum.

      The full explanation of this interpolation method can be found here.

      Parameters:
      interpolationMethod - a method from LinearInterpolator.Method.
    • getValue

      public double getValue(long timestamp)
      Retrieves datapoint value based on a given timestamp. Use this method if you only have one series of data in this class. Method overridden from the base class. This method will be called by the framework. Call this method only if you need interpolated values in your code.
      Specified by:
      getValue in interface IPlottable
      Specified by:
      getValue in class Plottable
      Parameters:
      timestamp - Timestamp in seconds for the datapoint.
      Returns:
      Double value of the datapoint.