module TimeSeriesMath::LinearInterpolation

Public Instance Methods

[](t) click to toggle source

Returns interpolated value.

# File lib/time_series_math/linear_interpolation.rb, line 6
def [](t)
  i0, i1 = indices_at(t)
  return first[1] if i0.nil?
  return last[1] if i1.nil?

  k = (t - @data[i0][0]) / (@data[i1][0] - @data[i0][0])
  diff_value = elemwise_sub(@data[i1][1], @data[i0][1])
  elemwise_add(@data[i0][1], elemwise_mul_scalar(k, diff_value))
end