module Nuggets::Array::InterpolateMixin

Public Instance Methods

interpolate([x0[, xN]]) → anArray click to toggle source

Simple linear interpolation of missing values in array.

Example:

[1, nil, 3, nil, 5].interpolate #=> [1, 2, 3, 4, 5]
   # File lib/nuggets/array/interpolate_mixin.rb
40 def interpolate(x0 = 0, xN = x0)
41   res, xX, interpolate = dup, [], lambda { |x|
42     m = (x - x0) / xX.size.succ.to_f unless xX.empty?
43     xX.each_with_index { |j, k| res[j] = m * k.succ + x0 }.clear
44     x
45   }
46 
47   each_with_index { |x, i| x ? x0 = interpolate[x] : xX << i }
48   interpolate[xN] if xN
49   res
50 end