weighted_average_slopes(data, old_start, old_dt, new_start, new_dt, new_npts, *args, **kwargs)[source]

Implements the weighted average slopes interpolation scheme proposed in [Wiggins1976] for evenly sampled data. The scheme guarantees that there will be no additional extrema after the interpolation in contrast to spline interpolation.

The slope \(s_i\) at each knot is given by a weighted average of the adjacent linear slopes \(m_i\) and \(m_{i+j}\):

\[s_i = (w_i m_i + w_{i+1} m_{i+1}) / (w_i + w_{i+1})\]


\[\begin{split}w = 1 / max \left\{ \left\| m_i \\right\|, \epsilon \\right\}\end{split}\]

The value at each data point and the slope are then plugged into a piecewise continuous cubic polynomial used to evaluate the interpolated sample points.

  • data (array_like) – Array to interpolate.

  • old_start (float) – The start of the array as a number.

  • old_dt – The time delta of the current array.

  • new_start (float) – The start of the interpolated array. Must be greater or equal to the current start of the array.

  • new_dt (float) – The desired new time delta.

  • new_npts (int) – The new number of samples.