Function interp::interp_slice
source · pub fn interp_slice<T>(x: &[T], y: &[T], xp: &[T]) -> Vec<T>
Expand description
Linearly interpolate the data points given by the x
and y
slices at each of the points in
the xp
slice.
Returns a Vec<T>
containing the equivalent y coordinates to each of the x coordinates given
by xp
.
This is equivalent to running interp
iteratively for each value in xp
, but more efficient
as intermediate calculations are not repeated.
If the lengths of x
and y
differ, only the number of elements in the shorter slice are
considered; excess elements are ignored.
If the length of either x
or y
is 0, 0 is returned for each xp
. If the length of either
is 1, y[0]
is returned. If both are 2 elements or longer the interpolations are performed as
expected.
Example
use interp::interp_slice;
let x = vec![0.0, 1.0, 2.0, 3.0];
let y = vec![1.0, 3.0, 4.0, 2.0];
let xp = vec![0.5, 2.5, 4.0];
assert_eq!(interp_slice(&x, &y, &xp), vec![2.0, 3.0, 0.0]);