Module Trace_stat_summary_utils.Resample

This Resample module offers 3 ways to resample a 1d vector:

Both downsampling and upsampling are possible:

    > upsampling
    vec0: |       |       |        |  (len0:4)
    vec1: |    |    |    |    |    |  (len1:6)
    > identity
    vec0: |       |       |        |  (len0:4)
    vec1: |       |       |        |  (len1:4)
    > downsampling
    vec0: |    |    |    |    |    |  (len0:6)
    vec1: |       |       |        |  (len1:4)

The first and last point of the input and output sequences are always equal.

val should_sample : i0:int -> len0:int -> i1:int -> len1:int -> [ `After | `Before | `Inside of float | `Out_of_bounds ]

When resampling a 1d vector from len0 to len1, this function locates a destination point with index i1 relative to the range i0 - 1 excluded and i0 included.

When both i0 and i1 equal 0, the result is `Inside 1..

len0 and len1 should be greater or equal to 2.

type acc
val create_acc : [ `Interpolate | `Next_neighbor ] -> len0:int -> len1:int -> v00:float -> acc

Creates a resampling accumulator.

Requires the first point of vec0.

val accumulate : acc -> float -> acc
val finalise : acc -> curve
val resample_vector : [< `Interpolate | `Next_neighbor ] -> curve -> int -> curve

resample_vector mode vec0 len1 is vec1, a curve of length len1, created by resampling vec0.

It internally relies on the should_sample function.