Interpolation, least-squares fit, splines

Overview

// classes

class mrpt::poses::CPose2DInterpolator;
class mrpt::poses::CPose3DInterpolator;

template <int DIM>
class mrpt::poses::CPoseInterpolatorBase;

class mrpt::math::CSplineInterpolator1D;

// global functions

template <class T, class VECTOR>
T mrpt::math::interpolate(
    const T& x,
    const VECTOR& ys,
    const T& x0,
    const T& x1
    );

double mrpt::math::interpolate2points(
    const double x,
    const double x0,
    const double y0,
    const double x1,
    const double y1,
    bool wrap2pi = false
    );

template <typename NUMTYPE, class VECTORLIKE>
NUMTYPE mrpt::math::spline(
    const NUMTYPE t,
    const VECTORLIKE& x,
    const VECTORLIKE& y,
    bool wrap2pi = false
    );

template <typename NUMTYPE, class VECTORLIKE, int NUM_POINTS = -1>
NUMTYPE mrpt::math::leastSquareLinearFit(
    const NUMTYPE t,
    const VECTORLIKE& x,
    const VECTORLIKE& y,
    bool wrap2pi = false
    );

template <class VECTORLIKE1, class VECTORLIKE2, class VECTORLIKE3, int NUM_POINTS = -1>
void mrpt::math::leastSquareLinearFit(
    const VECTORLIKE1& ts,
    VECTORLIKE2& outs,
    const VECTORLIKE3& x,
    const VECTORLIKE3& y,
    bool wrap2pi = false
    );

Global Functions

template <class T, class VECTOR>
T mrpt::math::interpolate(
    const T& x,
    const VECTOR& ys,
    const T& x0,
    const T& x1
    )

Interpolate a data sequence “ys” ranging from “x0” to “x1” (equally spaced), to obtain the approximation of the sequence at the point “x”.

If the point “x” is out of the range [x0,x1], the closest extreme “ys” value is returned. Implementation in #include <mrpt/math/interp_fit.hpp>

See also:

spline, interpolate2points

double mrpt::math::interpolate2points(
    const double x,
    const double x0,
    const double y0,
    const double x1,
    const double y1,
    bool wrap2pi = false
    )

Linear interpolation/extrapolation: evaluates at “x” the line (x0,y0)-(x1,y1).

If wrap2pi is true, output is wrapped to ]-pi,pi] (It is assumed that input “y” values already are in the correct range).

See also:

spline, interpolate, leastSquareLinearFit

template <typename NUMTYPE, class VECTORLIKE>
NUMTYPE mrpt::math::spline(
    const NUMTYPE t,
    const VECTORLIKE& x,
    const VECTORLIKE& y,
    bool wrap2pi = false
    )

Interpolates the value of a function in a point “t” given 4 SORTED points where “t” is between the two middle points If wrap2pi is true, output “y” values are wrapped to ]-pi,pi] (It is assumed that input “y” values already are in the correct range).

Implementation in #include <mrpt/math/interp_fit.hpp>

See also:

leastSquareLinearFit

template <typename NUMTYPE, class VECTORLIKE, int NUM_POINTS = -1>
NUMTYPE mrpt::math::leastSquareLinearFit(
    const NUMTYPE t,
    const VECTORLIKE& x,
    const VECTORLIKE& y,
    bool wrap2pi = false
    )

Interpolates or extrapolates using a least-square linear fit of the set of values “x” and “y”, evaluated at a single point “t”.

The vectors x and y must have size >=2, and all values of “x” must be different. If wrap2pi is true, output “y” values are wrapped to ]-pi,pi] (It is assumed that input “y” values already are in the correct range). Implementation in #include <mrpt/math/interp_fit.hpp>

See also:

spline

getRegressionLine, getRegressionPlane

template <class VECTORLIKE1, class VECTORLIKE2, class VECTORLIKE3, int NUM_POINTS = -1>
void mrpt::math::leastSquareLinearFit(
    const VECTORLIKE1& ts,
    VECTORLIKE2& outs,
    const VECTORLIKE3& x,
    const VECTORLIKE3& y,
    bool wrap2pi = false
    )

Interpolates or extrapolates using a least-square linear fit of the set of values “x” and “y”, evaluated at a sequence of points “ts” and returned at “outs”.

If wrap2pi is true, output “y” values are wrapped to ]-pi,pi] (It is assumed that input “y” values already are in the correct range). Implementation in #include <mrpt/math/interp_fit.hpp>

Requires #include <Eigen/Dense>

See also:

spline, getRegressionLine, getRegressionPlane