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