org.jrobin.data
Class LinearInterpolator

java.lang.Object
  extended by org.jrobin.data.Plottable
      extended by org.jrobin.data.LinearInterpolator

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 (INTERPOLATE_LINEAR). Interpolation method handles NaN datasource values gracefully.


Field Summary
static int INTERPOLATE_LEFT
          constant used to specify LEFT interpolation.
static int INTERPOLATE_LINEAR
          constant used to specify LINEAR interpolation (default interpolation method).
static int INTERPOLATE_REGRESSION
          constant used to specify LINEAR REGRESSION as interpolation method.
static int INTERPOLATE_RIGHT
          constant used to specify RIGHT interpolation.
 
Constructor Summary
LinearInterpolator(Calendar[] dates, double[] values)
          Creates LinearInterpolator from arrays of timestamps and corresponding datasource values.
LinearInterpolator(Date[] dates, double[] values)
          Creates LinearInterpolator from arrays of timestamps and corresponding datasource values.
LinearInterpolator(long[] timestamps, double[] values)
          Creates LinearInterpolator from arrays of timestamps and corresponding datasource values.
 
Method Summary
 double getValue(long timestamp)
          Method overriden from the base class.
 void setInterpolationMethod(int interpolationMethod)
          Sets interpolation method to be used.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

INTERPOLATE_LEFT

public static final int INTERPOLATE_LEFT
constant used to specify LEFT interpolation. See setInterpolationMethod() for explanation.

See Also:
Constant Field Values

INTERPOLATE_RIGHT

public static final int INTERPOLATE_RIGHT
constant used to specify RIGHT interpolation. See setInterpolationMethod() for explanation.

See Also:
Constant Field Values

INTERPOLATE_LINEAR

public static final int INTERPOLATE_LINEAR
constant used to specify LINEAR interpolation (default interpolation method). See setInterpolationMethod() for explanation.

See Also:
Constant Field Values

INTERPOLATE_REGRESSION

public static final int INTERPOLATE_REGRESSION
constant used to specify LINEAR REGRESSION as interpolation method. See setInterpolationMethod() for explanation.

See Also:
Constant Field Values
Constructor Detail

LinearInterpolator

public LinearInterpolator(long[] timestamps,
                          double[] values)
                   throws RrdException
Creates LinearInterpolator from arrays of timestamps and corresponding datasource values.

Parameters:
timestamps - timestamps in seconds
values - corresponding datasource values
Throws:
RrdException - 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)
                   throws RrdException
Creates LinearInterpolator from arrays of timestamps and corresponding datasource values.

Parameters:
dates - Array of Date objects
values - corresponding datasource values
Throws:
RrdException - 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)
                   throws RrdException
Creates LinearInterpolator from arrays of timestamps and corresponding datasource values.

Parameters:
dates - array of GregorianCalendar objects
values - corresponding datasource values
Throws:
RrdException - Thrown if supplied arrays do not contain at least two values, or if timestamps are not ordered, or array lengths are not equal.
Method Detail

setInterpolationMethod

public void setInterpolationMethod(int 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:

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.

The full explanation of this inteprolation 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).

getValue

public double getValue(long timestamp)
Method overriden from the base class. This method will be called by the framework. Call this method only if you need interpolated values in your code.

Overrides:
getValue in class Plottable
Parameters:
timestamp - timestamp in seconds
Returns:
inteprolated datasource value


Copyright 2003-2008. All Rights Reserved.