# Interpolation, least-squares fit, splines

```// 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:

```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:

```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

```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: