MRPT  2.0.3
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables

Detailed Description

This base provides a set of functions for maths stuff.

mrpt_math_grp

Namespaces

 detail
 
 internal
 

Classes

class  CAtan2LookUpTable
 A look-up-table (LUT) of atan values for any (x,y) value in a square/rectangular grid of predefined resolution. More...
 
class  CAtan2LookUpTableMultiRes
 Like CAtan2LookUpTable but with a multiresolution grid for increasingly better accuracy in points nearer to the origin. More...
 
class  CBinaryRelation
 This class models a binary relation through the elements of any given set. More...
 
class  CConstMatrixColumnAccessor
 A vector-like wrapper for a const Matrix for accessing the elements of a given column with a [] operator. More...
 
class  CConstMatrixColumnAccessorExtended
 A vector-like wrapper for a const Matrix for accessing the elements of a given column with a [] operator, with offset and custom spacing. More...
 
class  CConstMatrixRowAccessor
 A vector-like wrapper for a const Matrix for accessing the elements of a given row with a [] operator. More...
 
class  CConstMatrixRowAccessorExtended
 A vector-like wrapper for a const Matrix for accessing the elements of a given row with a [] operator, with offset and custom spacing. More...
 
struct  CExceptionNotDefPos
 Used in mrpt::math::CSparseMatrix. More...
 
class  CHistogram
 This class provides an easy way of computing histograms for unidimensional real valued variables. More...
 
class  CLevenbergMarquardtTempl
 An implementation of the Levenberg-Marquardt algorithm for least-square minimization. More...
 
class  CMatrixB
 This class is a "CSerializable" wrapper for "CMatrixBool". More...
 
class  CMatrixColumnAccessor
 A vector-like wrapper for a Matrix for accessing the elements of a given column with a [] operator. More...
 
class  CMatrixColumnAccessorExtended
 A vector-like wrapper for a Matrix for accessing the elements of a given column with a [] operator, with offset and custom spacing. More...
 
class  CMatrixD
 This class is a "CSerializable" wrapper for "CMatrixDynamic<double>". More...
 
class  CMatrixDynamic
 This template class provides the basic functionality for a general 2D any-size, resizable container of numerical or non-numerical elements. More...
 
class  CMatrixF
 This class is a "CSerializable" wrapper for "CMatrixFloat". More...
 
class  CMatrixFixed
 A compile-time fixed-size numeric matrix container. More...
 
class  CMatrixRowAccessor
 A vector-like wrapper for a Matrix for accessing the elements of a given row with a [] operator. More...
 
class  CMatrixRowAccessorExtended
 A vector-like wrapper for a Matrix for accessing the elements of a given row with a [] operator, with offset and custom spacing. More...
 
class  CMonteCarlo
 Montecarlo simulation for experiments in 1D. More...
 
struct  ContainerType
 ContainerType<T>::element_t exposes the value of any STL or Eigen container. More...
 
struct  ContainerType< Eigen::EigenBase< Derived > >
 Specialization for Eigen containers. More...
 
struct  ContainerType< mrpt::math::MatrixVectorBase< Scalar, Derived > >
 Specialization for MRPT containers. More...
 
class  CPolygon
 A wrapper of a TPolygon2D class, implementing CSerializable. More...
 
class  CProbabilityDensityFunction
 A generic template for probability density distributions (PDFs). More...
 
class  CQuaternion
 A quaternion, which can represent a 3D rotation as pair $ (r,\mathbf{u}) *$, with a real part "r" and a 3D vector $ \mathbf{u} = (x,y,z) $, or alternatively, q = r + ix + jy + kz. More...
 
class  CSparseMatrix
 A sparse matrix structure, wrapping T. More...
 
class  CSparseMatrixTemplate
 A sparse matrix container (with cells of any type), with iterators. More...
 
class  CSparseSymmetricalMatrix
 A sparse matrix container for square symmetrical content around the main diagonal. More...
 
class  CSplineInterpolator1D
 A (persistent) sequence of (x,y) coordinates, allowing queries of intermediate points through spline interpolation, where possible. More...
 
class  CVectorDynamic
 Template for column vectors of dynamic size, compatible with Eigen. More...
 
class  FAddPoint
 Auxiliary functor class to compute polygon's center. More...
 
class  KDTreeCapable
 A generic adaptor class for providing Nearest Neighbor (NN) lookup via the nanoflann library. More...
 
struct  LowPassFilter_IIR1
 1-order low-pass IIR filter. More...
 
struct  matrix_size_t
 Auxiliary class used in CMatrixDynamic:size(), CMatrixDynamic::resize(), CMatrixFixed::size(), CMatrixFixed::resize(), to mimic the behavior of STL-containers. More...
 
class  MatrixBase
 Base CRTP class for all MRPT matrices. More...
 
struct  MatrixBlockSparseCols
 A templated column-indexed efficient storage of block-sparse Jacobian or Hessian matrices, together with other arbitrary information. More...
 
class  MatrixVectorBase
 Base CRTP class for all MRPT vectors and matrices. More...
 
class  ModelSearch
 Model search implementations: RANSAC and genetic algorithm. More...
 
class  RANSAC_Template
 A generic RANSAC implementation. More...
 
struct  RobustKernel
 
struct  RobustKernel< rkLeastSquares, T >
 No robust kernel, use standard least squares: rho(r) = r^2. More...
 
struct  RobustKernel< rkPseudoHuber, T >
 Pseudo-huber robust kernel: rho(r) = 2 * delta^2 * ( -1+sqrt( 1+ r^2/delta^2 ) ) More...
 
struct  TLine2D
 2D line without bounds, represented by its equation $Ax+By+C=0$. More...
 
struct  TLine3D
 3D line, represented by a base point and a director vector. More...
 
struct  TObject2D
 Standard type for storing any lightweight 2D type. More...
 
struct  TObject3D
 Standard object for storing any 3D lightweight object. More...
 
struct  TPlane
 3D Plane, represented by its equation $Ax+By+Cz+D=0$ More...
 
struct  TPoint2D_
 Base template for TPoint2D and TPoint2Df. More...
 
struct  TPoint2D_data
 
struct  TPoint3D_
 Base template for TPoint3D and TPoint3Df. More...
 
struct  TPoint3D_data
 Trivially copiable underlying data for TPoint3D 1-byte memory packed, no padding]. More...
 
struct  TPointXYZfIu8
 XYZ point (float) + Intensity(u8) More...
 
struct  TPointXYZfRGBAu8
 XYZ point (float) + RGBA(u8) More...
 
struct  TPointXYZfRGBu8
 XYZ point (float) + RGB(u8) More...
 
struct  TPointXYZIu8
 XYZ point (double) + Intensity(u8) More...
 
struct  TPointXYZRGBAf
 XYZ point (float) + RGBA(float) [1-byte memory packed, no padding]. More...
 
struct  TPointXYZRGBu8
 XYZ point (double) + RGB(u8) More...
 
class  TPolygon2D
 2D polygon, inheriting from std::vector<TPoint2D>. More...
 
class  TPolygon3D
 3D polygon, inheriting from std::vector<TPoint3D> More...
 
class  TPolygonWithPlane
 Slightly heavyweight type to speed-up calculations with polygons in 3D. More...
 
struct  TPose2D
 Lightweight 2D pose. More...
 
struct  TPose3D
 Lightweight 3D pose (three spatial coordinates, plus three angular coordinates). More...
 
struct  TPose3DQuat
 Lightweight 3D pose (three spatial coordinates, plus a quaternion ). More...
 
struct  TPoseOrPoint
 Base type of all TPoseXX and TPointXX classes in mrpt::math. More...
 
struct  TSegment2D
 2D segment, consisting of two points. More...
 
struct  TSegment3D
 3D segment, consisting of two points. More...
 
struct  TTwist2D
 2D twist: 2D velocity vector (vx,vy) + planar angular velocity (omega) More...
 
struct  TTwist3D
 3D twist: 3D velocity vector (vx,vy,vz) + angular velocity (wx,wy,wz) More...
 

Typedefs

using CLevenbergMarquardt = CLevenbergMarquardtTempl< mrpt::math::CVectorDouble >
 The default name for the LM class is an instantiation for "double". More...
 
using CMatrixBool = CMatrixDynamic< bool >
 Declares a matrix of booleans (non serializable). More...
 
using CMatrixFloat = CMatrixDynamic< float >
 Declares a matrix of float numbers (non serializable). More...
 
using CMatrixDouble = CMatrixDynamic< double >
 Declares a matrix of double numbers (non serializable). More...
 
using CMatrixUInt = CMatrixDynamic< unsigned int >
 Declares a matrix of unsigned ints (non serializable). More...
 
using CMatrix_u8 = CMatrixDynamic< uint8_t >
 matrix of uint8_t (non serializable). More...
 
using CMatrix_u16 = CMatrixDynamic< uint16_t >
 matrix of uint16_t (non serializable). More...
 
using CMatrixLongDouble = CMatrixDynamic< double >
 Declares a matrix of "long doubles" (non serializable), or of "doubles" if the compiler does not support "long double". More...
 
using CQuaternionDouble = CQuaternion< double >
 A quaternion of data type "double". More...
 
using CQuaternionFloat = CQuaternion< float >
 A quaternion of data type "float". More...
 
using CVectorFloat = CVectorDynamic< float >
 
using CVectorDouble = CVectorDynamic< double >
 
template<typename T , std::size_t N>
using CVectorFixed = CMatrixFixed< T, N, 1 >
 CVectorFixed is an array for numeric types supporting several mathematical operations (actually, just a wrapper on Eigen::Matrix<T,N,1>) More...
 
template<std::size_t N>
using CVectorFixedFloat = CVectorFixed< float, N >
 Specialization of CVectorFixed for float numbers. More...
 
template<std::size_t N>
using CVectorFixedDouble = CVectorFixed< double, N >
 Specialization of CVectorFixed for double numbers. More...
 
using RANSAC = RANSAC_Template< double >
 The default instance of RANSAC, for double type. More...
 
using TPlane3D = TPlane
 
using TPoint2D = TPoint2D_< double >
 Lightweight 2D point. More...
 
using TPoint2Df = TPoint2D_< float >
 
using TVector2D = TPoint2D
 Useful type alias for double 2-vectors. More...
 
using TVector2Df = TPoint2Df
 Useful type alias for float 2-vectors. More...
 
using TPoint3D = TPoint3D_< double >
 Lightweight 3D point. More...
 
using TPoint3Df = TPoint3D_< float >
 
using TVector3D = TPoint3D
 Useful type alias for 3-vectors. More...
 
using TVector3Df = TPoint3Df
 
using FFT_TYPE = float
 Copyright(C) 1997 Takuya OOURA (email: ooura.nosp@m.@mmm.nosp@m..t.u-.nosp@m.toky.nosp@m.o.ac..nosp@m.jp). More...
 

Enumerations

enum  TConstructorFlags_Quaternions { UNINITIALIZED_QUATERNION = 0 }
 
enum  TConstructorFlags_Matrices { UNINITIALIZED_MATRIX = 0 }
 For usage in one of the constructors of CMatrixFixed or CMatrixDynamic (and derived classes), if it's not required to fill it with zeros at the constructor to save time. More...
 
enum  TMatrixTextFileFormat { MATRIX_FORMAT_ENG = 0, MATRIX_FORMAT_FIXED = 1, MATRIX_FORMAT_INT = 2 }
 
enum  TRobustKernelType { rkLeastSquares = 0, rkPseudoHuber }
 The different types of kernels for usage within a robustified least-squares estimator. More...
 

Functions

template<class MATRIXLIKE >
size_t size (const MATRIXLIKE &m, const int dim)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, CMatrixD::Ptr &pObj)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &s, const CVectorFloat &a)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &s, const CVectorDouble &a)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, CVectorDouble &a)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, CVectorFloat &a)
 
double normalPDF (double x, double mu, double std)
 Evaluates the univariate normal (Gaussian) distribution at a given point "x". More...
 
template<class VECTORLIKE1 , class VECTORLIKE2 , class MATRIXLIKE >
MATRIXLIKE::Scalar normalPDFInf (const VECTORLIKE1 &x, const VECTORLIKE2 &mu, const MATRIXLIKE &cov_inv, const bool scaled_pdf=false)
 Evaluates the multivariate normal (Gaussian) distribution at a given point "x". More...
 
template<class VECTORLIKE1 , class VECTORLIKE2 , class MATRIXLIKE >
MATRIXLIKE::Scalar normalPDF (const VECTORLIKE1 &x, const VECTORLIKE2 &mu, const MATRIXLIKE &cov, const bool scaled_pdf=false)
 Evaluates the multivariate normal (Gaussian) distribution at a given point "x". More...
 
template<typename VECTORLIKE , typename MATRIXLIKE >
MATRIXLIKE::Scalar normalPDF (const VECTORLIKE &d, const MATRIXLIKE &cov)
 Evaluates the multivariate normal (Gaussian) distribution at a given point given its distance vector "d" from the Gaussian mean. More...
 
template<typename VECTORLIKE1 , typename MATRIXLIKE1 , typename VECTORLIKE2 , typename MATRIXLIKE2 >
double KLD_Gaussians (const VECTORLIKE1 &mu0, const MATRIXLIKE1 &cov0, const VECTORLIKE2 &mu1, const MATRIXLIKE2 &cov1)
 Kullback-Leibler divergence (KLD) between two independent multivariate Gaussians. More...
 
double normalQuantile (double p)
 Evaluates the Gaussian distribution quantile for the probability value p=[0,1]. More...
 
double normalCDF (double p)
 Evaluates the Gaussian cumulative density function. More...
 
double chi2inv (double P, unsigned int dim=1)
 The "quantile" of the Chi-Square distribution, for dimension "dim" and probability 0<P<1 (the inverse of chi2CDF) An aproximation from the Wilson-Hilferty transformation is used. More...
 
double noncentralChi2CDF (unsigned int degreesOfFreedom, double noncentrality, double arg)
 
double chi2CDF (unsigned int degreesOfFreedom, double arg)
 
double chi2PDF (unsigned int degreesOfFreedom, double arg, double accuracy=1e-7)
 
std::pair< double, double > noncentralChi2PDF_CDF (unsigned int degreesOfFreedom, double noncentrality, double arg, double eps=1e-7)
 Returns the 'exact' PDF (first) and CDF (second) of a Non-central chi-squared probability distribution, using an iterative method. More...
 
template<typename CONTAINER , typename T >
void confidenceIntervals (const CONTAINER &data, T &out_mean, T &out_lower_conf_interval, T &out_upper_conf_interval, const double confidenceInterval=0.1, const size_t histogramNumBins=1000)
 Return the mean and the 10%-90% confidence points (or with any other confidence value) of a set of samples by building the cummulative CDF of all the elements of the container. More...
 
void setEpsilon (double nE)
 Changes the value of the geometric epsilon (default = 1e-5) More...
 
double getEpsilon ()
 Gets the value of the geometric epsilon (default = 1e-5) More...
 
void fft_real (CVectorFloat &in_realData, CVectorFloat &out_FFT_Re, CVectorFloat &out_FFT_Im, CVectorFloat &out_FFT_Mag)
 Computes the FFT of a 2^N-size vector of real numbers, and returns the Re+Im+Magnitude parts. More...
 
void dft2_real (const CMatrixFloat &in_data, CMatrixFloat &out_real, CMatrixFloat &out_imag)
 Compute the 2D Discrete Fourier Transform (DFT) of a real matrix, returning the real and imaginary parts separately. More...
 
void idft2_real (const CMatrixFloat &in_real, const CMatrixFloat &in_imag, CMatrixFloat &out_data)
 Compute the 2D inverse Discrete Fourier Transform (DFT) More...
 
void dft2_complex (const CMatrixFloat &in_real, const CMatrixFloat &in_imag, CMatrixFloat &out_real, CMatrixFloat &out_imag)
 Compute the 2D Discrete Fourier Transform (DFT) of a complex matrix, returning the real and imaginary parts separately. More...
 
void idft2_complex (const CMatrixFloat &in_real, const CMatrixFloat &in_imag, CMatrixFloat &out_real, CMatrixFloat &out_imag)
 Compute the 2D inverse Discrete Fourier Transform (DFT). More...
 
void cross_correlation_FFT (const CMatrixFloat &A, const CMatrixFloat &B, CMatrixFloat &out_corr)
 Correlation of two matrixes using 2D FFT. More...
 
double fresnel_sin_integral (double x) noexcept
 Evaluates the integral from 0 to x of sqrt(2/pi) sin(t^2) dt. More...
 
double fresnel_cos_integral (double x) noexcept
 Evaluates the integral from 0 to x of sqrt(2/pi) cos(t^2) dt. More...
 
long double lfresnel_sin_integral (long double x) noexcept
 long double version of fresnel_sin_integral More...
 
long double lfresnel_cos_integral (long double x) noexcept
 long double version of fresnel_cos_integral More...
 
template<class MATRIXLIKE1 , class MATRIXLIKE2 >
void homogeneousMatrixInverse (const MATRIXLIKE1 &M, MATRIXLIKE2 &out_inverse_M)
 Efficiently compute the inverse of a 4x4 homogeneous matrix by only transposing the rotation 3x3 part and solving the translation with dot products. More...
 
template<class IN_ROTMATRIX , class IN_XYZ , class OUT_ROTMATRIX , class OUT_XYZ >
void homogeneousMatrixInverse (const IN_ROTMATRIX &in_R, const IN_XYZ &in_xyz, OUT_ROTMATRIX &out_R, OUT_XYZ &out_xyz)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<class MATRIXLIKE >
void homogeneousMatrixInverse (MATRIXLIKE &M)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<class T , class VECTOR >
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". More...
 
double 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). More...
 
template<typename NUMTYPE , class VECTORLIKE >
NUMTYPE 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). More...
 
template<typename NUMTYPE , class VECTORLIKE , int NUM_POINTS = -1>
NUMTYPE 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". More...
 
template<class VECTORLIKE1 , class VECTORLIKE2 , class VECTORLIKE3 , int NUM_POINTS = -1>
void 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". More...
 
template<class Derived >
const Derived & mat2eig (const Eigen::EigenBase< Derived > &m)
 Returns an Eigen-compatible type, despite its argument already is an Eigen matrix, or an mrpt-math matrix/vector. More...
 
template<class MAT >
auto mat2eig (const MAT &m, typename MAT::eigen_t *=nullptr)
 
template<typename MAT >
CMatrixRowAccessor< MAT > getRowAccessor (MAT &m, size_t rowIdx)
 
template<typename MAT >
CMatrixRowAccessorExtended< MAT > getRowAccessor (MAT &m, size_t rowIdx, size_t offset, size_t space=1)
 
template<typename MAT >
CConstMatrixRowAccessor< MAT > getRowAccessor (const MAT &m, size_t rowIdx)
 
template<typename MAT >
CConstMatrixRowAccessorExtended< MAT > getRowAccessor (const MAT &m, size_t rowIdx, size_t offset, size_t space=1)
 
template<typename MAT >
CMatrixColumnAccessor< MAT > getColumnAccessor (MAT &m, size_t colIdx)
 
template<typename MAT >
CMatrixColumnAccessorExtended< MAT > getColumnAccessor (MAT &m, size_t colIdx, size_t offset, size_t space=1)
 
template<typename MAT >
CConstMatrixColumnAccessor< MAT > getColumnAccessor (const MAT &m, size_t colIdx)
 
template<typename MAT >
CConstMatrixColumnAccessorExtended< MAT > getColumnAccessor (const MAT &m, size_t colIdx, size_t offset, size_t space=1)
 
template<typename DER >
void internalAssertEigenDefined ()
 Issues a static_assert() error if trying to compile a method that requires Eigen headers, without including them. More...
 
template<typename Scalar , class Derived , typename = std::enable_if_t< Derived::RowsAtCompileTime == Derived::ColsAtCompileTime || (Derived::ColsAtCompileTime == 1)>>
std::ostream & operator<< (std::ostream &o, const MatrixVectorBase< Scalar, Derived > &m)
 Stream as text. More...
 
template<class VECTORLIKE , class VECTORLIKE2 , class VECTORLIKE3 , class MATRIXLIKE , class USERPARAM >
void estimateJacobian (const VECTORLIKE &x, const std::function< void(const VECTORLIKE &x, const USERPARAM &y, VECTORLIKE3 &out)> &functor, const VECTORLIKE2 &increments, const USERPARAM &userParam, MATRIXLIKE &out_Jacobian)
 Estimate the Jacobian of a multi-dimensional function around a point "x", using finite differences of a given size in each input dimension. More...
 
template<class CONTAINER >
std::vector< double > histogram (const CONTAINER &v, double limit_min, double limit_max, size_t number_bins, bool do_normalization=false, std::vector< double > *out_bin_centers=nullptr)
 Computes the normalized or normal histogram of a sequence of numbers given the number of bins and the limits. More...
 
template<class EIGEN_CONTAINER >
void resizeLike (EIGEN_CONTAINER &trg, const EIGEN_CONTAINER &src)
 
template<typename T >
void resizeLike (std::vector< T > &trg, const std::vector< T > &src)
 
template<class CONTAINER1 , class CONTAINER2 >
void cumsum_tmpl (const CONTAINER1 &in_data, CONTAINER2 &out_cumsum)
 Computes the cumulative sum of all the elements, saving the result in another container. More...
 
template<class CONTAINER1 , class CONTAINER2 >
void cumsum (const CONTAINER1 &in_data, CONTAINER2 &out_cumsum)
 
template<class CONTAINER >
CONTAINER cumsum (const CONTAINER &in_data)
 Computes the cumulative sum of all the elements. More...
 
template<class CONTAINER >
CONTAINER::Scalar norm_inf (const CONTAINER &v)
 
template<class CONTAINER >
CONTAINER::Scalar norm (const CONTAINER &v)
 
template<class CONTAINER , int = CONTAINER::is_mrpt_type>
CONTAINER::Scalar maximum (const CONTAINER &v)
 
template<class CONTAINER , int = CONTAINER::is_mrpt_type>
CONTAINER::Scalar minimum (const CONTAINER &v)
 
template<class Derived >
Derived::Scalar maximum (const Eigen::MatrixBase< Derived > &v)
 
template<class Derived >
Derived::Scalar minimum (const Eigen::MatrixBase< Derived > &v)
 
template<typename T >
maximum (const std::vector< T > &v)
 
template<typename T >
minimum (const std::vector< T > &v)
 
template<typename MAT_H , typename MAT_C , typename MAT_R >
void multiply_HCHt (const MAT_H &H, const MAT_C &C, MAT_R &R, bool accumResultInOutput=false)
 R = H * C * H^t. More...
 
template<std::size_t H_ROWS, std::size_t H_COLS, typename Scalar >
mrpt::math::CMatrixFixed< Scalar, H_ROWS, H_ROWS > multiply_HCHt (const mrpt::math::CMatrixFixed< Scalar, H_ROWS, H_COLS > &H, const mrpt::math::CMatrixFixed< Scalar, H_COLS, H_COLS > &C)
 return a fixed-size matrix with the result of: H * C * H^t More...
 
template<typename VECTOR_H , typename MAT_C >
MAT_C::Scalar multiply_HtCH_scalar (const VECTOR_H &H, const MAT_C &C)
 r (scalar) = H^t*C*H (H: column vector, C: symmetric matrix) More...
 
template<typename VECTOR_H , typename MAT_C >
MAT_C::Scalar multiply_HCHt_scalar (const VECTOR_H &H, const MAT_C &C)
 r (scalar) = H*C*H^t (H: row vector, C: symmetric matrix) More...
 
template<class MAT_IN , class VECTOR , class MAT_OUT >
void meanAndCovMat (const MAT_IN &v, VECTOR &out_mean, MAT_OUT &out_cov)
 Computes the mean vector and covariance from a list of samples in an NxM matrix, where each row is a sample, so the covariance is MxM. More...
 
template<class MAT_IN , class VEC >
void meanAndStdColumns (const MAT_IN &m, VEC &outMeanVector, VEC &outStdVector, const bool unbiased_variance=true)
 Computes a row with the mean values of each column in the matrix and the associated vector with the standard deviation of each column. More...
 
template<class MATRIX >
CMatrixDouble cov (const MATRIX &v)
 Computes the covariance matrix from a list of samples in an NxM matrix, where each row is a sample, so the covariance is MxM. More...
 
template<class MAT_A , class SKEW_3VECTOR , class MAT_OUT >
void multiply_A_skew3 (const MAT_A &A, const SKEW_3VECTOR &v, MAT_OUT &out)
 Only for vectors/arrays "v" of length3, compute out = A * Skew(v), where Skew(v) is the skew symmetric matric generated from v (see mrpt::math::skew_symmetric3) More...
 
template<class SKEW_3VECTOR , class MAT_A , class MAT_OUT >
void multiply_skew3_A (const SKEW_3VECTOR &v, const MAT_A &A, MAT_OUT &out)
 Only for vectors/arrays "v" of length3, compute out = Skew(v) * A, where Skew(v) is the skew symmetric matric generated from v (see mrpt::math::skew_symmetric3) More...
 
template<typename MATIN , typename MATOUT >
void laplacian (const MATIN &g, MATOUT &ret)
 Computes the Laplacian of a square graph weight matrix. More...
 
template<std::size_t BLOCKSIZE, typename MAT , typename MATRIX >
void extractSubmatrixSymmetricalBlocks (const MAT &m, const std::vector< size_t > &block_indices, MATRIX &out)
 Get a submatrix from a square matrix, by collecting the elements M(idxs,idxs), where idxs is a sequence {block_indices(i):block_indices(i)+BLOCKSIZE-1} for all "i" up to the size of block_indices. More...
 
template<typename MAT , typename MATRIX >
void extractSubmatrixSymmetricalBlocksDyn (const MAT &m, const std::size_t BLOCKSIZE, const std::vector< size_t > &block_indices, MATRIX &out)
 
template<typename MAT , typename MATRIX >
void extractSubmatrixSymmetrical (const MAT &m, const std::vector< size_t > &indices, MATRIX &out)
 Get a submatrix from a square matrix, by collecting the elements M(idxs,idxs), where idxs is the sequence of indices passed as argument. More...
 
template<class T >
std::ostream & operator<< (std::ostream &out, const std::vector< T > &d)
 A template function for printing out the contents of a std::vector variable. More...
 
template<class T >
std::ostream & operator<< (std::ostream &out, std::vector< T > *d)
 A template function for printing out the contents of a std::vector variable. More...
 
template<typename T , size_t N>
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &ostrm, const CVectorFixed< T, N > &a)
 Binary dump of a CVectorFixed<T,N> to a stream. More...
 
template<typename T , size_t N>
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &istrm, CVectorFixed< T, N > &a)
 Binary read of a CVectorFixed<T,N> from a stream. More...
 
int solve_poly3 (double *x, double a, double b, double c) noexcept
 Solves cubic equation x^3 + a*x^2 + b*x + c = 0. More...
 
int solve_poly4 (double *x, double a, double b, double c, double d) noexcept
 Solves quartic equation x^4 + a*x^3 + b*x^2 + c*x + d = 0 by Dekart-Euler method. More...
 
int solve_poly5 (double *x, double a, double b, double c, double d, double e) noexcept
 Solves equation x^5 + a*x^4 + b*x^3 + c*x^2 + d*x + e = 0. More...
 
int solve_poly4Bi (double *x, double b, double d) noexcept
 Solve equation x^4 + b*x^2 + d = 0. More...
 
int solve_poly4De (double *x, double b, double c, double d) noexcept
 Solve equation x^4 + b*x^2 + c*x + d = 0. More...
 
int solve_poly2 (double a, double b, double c, double &r1, double &r2) noexcept
 Solves equation a*x^2 + b*x + c = 0. More...
 
template<typename T >
size_t ransacDatasetSize (const CMatrixDynamic< T > &dataset)
 Define overloaded functions for user types as required. More...
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, mrpt::math::TLine2D &l)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const mrpt::math::TLine2D &l)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, mrpt::math::TLine3D &l)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const mrpt::math::TLine3D &l)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, mrpt::math::TObject2D &o)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const mrpt::math::TObject2D &o)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, mrpt::math::TObject3D &o)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const mrpt::math::TObject3D &o)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, mrpt::math::TPlane &p)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const mrpt::math::TPlane &p)
 
template<typename T >
constexpr bool operator== (const TPoint2D_< T > &p1, const TPoint2D_< T > &p2)
 Exact comparison between 2D points. More...
 
template<typename T >
constexpr bool operator!= (const TPoint2D_< T > &p1, const TPoint2D_< T > &p2)
 Exact comparison between 2D points. More...
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, mrpt::math::TPointXYZfRGBu8 &p)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const mrpt::math::TPointXYZfRGBu8 &p)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, mrpt::math::TPointXYZfRGBAu8 &p)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const mrpt::math::TPointXYZfRGBAu8 &p)
 
template<typename T >
constexpr TPoint3D_< T > operator- (const TPoint3D_< T > &p1)
 Unary minus operator for 3D points. More...
 
template<typename T >
constexpr bool operator== (const TPoint3D_< T > &p1, const TPoint3D_< T > &p2)
 Exact comparison between 3D points. More...
 
template<typename T >
constexpr bool operator!= (const TPoint3D_< T > &p1, const TPoint3D_< T > &p2)
 Exact comparison between 3D points. More...
 
bool operator== (const TPose2D &p1, const TPose2D &p2)
 Exact comparison between 2D poses, taking possible cycles into account. More...
 
bool operator!= (const TPose2D &p1, const TPose2D &p2)
 Exact comparison between 2D poses, taking possible cycles into account. More...
 
TPose3D operator- (const TPose3D &p)
 Unary $\ominus$ operator: computes inverse SE(3) element. More...
 
TPose3D operator- (const TPose3D &b, const TPose3D &a)
 Binary $\ominus$ operator: $b \ominus a$ computes the relative SE(3) pose of b "as seen from" a More...
 
bool operator== (const TPose3D &p1, const TPose3D &p2)
 Exact comparison between 3D poses, taking possible cycles into account. More...
 
bool operator!= (const TPose3D &p1, const TPose3D &p2)
 Exact comparison between 3D poses, taking possible cycles into account. More...
 
template<class PoseOrPoint , typename = std::enable_if_t<std::is_base_of_v< mrpt::math::TPoseOrPoint, PoseOrPoint>>>
std::ostream & operator<< (std::ostream &o, const PoseOrPoint &p)
 Text streaming function. More...
 
template<class PoseOrPoint , typename = std::enable_if_t<std::is_base_of_v< mrpt::math::TPoseOrPoint, PoseOrPoint>>>
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, PoseOrPoint &o)
 Binary streaming function. More...
 
template<class PoseOrPoint , typename = std::enable_if_t<std::is_base_of_v< mrpt::math::TPoseOrPoint, PoseOrPoint>>>
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const PoseOrPoint &o)
 Binary streaming function. More...
 
template<class VECTORLIKE1 , class MATLIKE1 , class USERPARAM , class VECTORLIKE2 , class VECTORLIKE3 , class MATLIKE2 >
void transform_gaussian_unscented (const VECTORLIKE1 &x_mean, const MATLIKE1 &x_cov, void(*functor)(const VECTORLIKE1 &x, const USERPARAM &fixed_param, VECTORLIKE3 &y), const USERPARAM &fixed_param, VECTORLIKE2 &y_mean, MATLIKE2 &y_cov, const bool *elem_do_wrap2pi=nullptr, const double alpha=1e-3, const double K=0, const double beta=2.0)
 Scaled unscented transformation (SUT) for estimating the Gaussian distribution of a variable Y=f(X) for an arbitrary function f() provided by the user. More...
 
template<class VECTORLIKE1 , class MATLIKE1 , class USERPARAM , class VECTORLIKE2 , class VECTORLIKE3 , class MATLIKE2 >
void transform_gaussian_montecarlo (const VECTORLIKE1 &x_mean, const MATLIKE1 &x_cov, void(*functor)(const VECTORLIKE1 &x, const USERPARAM &fixed_param, VECTORLIKE3 &y), const USERPARAM &fixed_param, VECTORLIKE2 &y_mean, MATLIKE2 &y_cov, const size_t num_samples=1000, std::vector< VECTORLIKE3 > *out_samples_y=nullptr)
 Simple Montecarlo-base estimation of the Gaussian distribution of a variable Y=f(X) for an arbitrary function f() provided by the user. More...
 
template<class VECTORLIKE1 , class MATLIKE1 , class USERPARAM , class VECTORLIKE2 , class VECTORLIKE3 , class MATLIKE2 >
void transform_gaussian_linear (const VECTORLIKE1 &x_mean, const MATLIKE1 &x_cov, void(*functor)(const VECTORLIKE1 &x, const USERPARAM &fixed_param, VECTORLIKE3 &y), const USERPARAM &fixed_param, VECTORLIKE2 &y_mean, MATLIKE2 &y_cov, const VECTORLIKE1 &x_increments)
 First order uncertainty propagation estimator of the Gaussian distribution of a variable Y=f(X) for an arbitrary function f() provided by the user. More...
 
bool operator== (const TSegment2D &s1, const TSegment2D &s2)
 
bool operator!= (const TSegment2D &s1, const TSegment2D &s2)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, mrpt::math::TSegment2D &s)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const mrpt::math::TSegment2D &s)
 
bool operator== (const TSegment3D &s1, const TSegment3D &s2)
 
bool operator!= (const TSegment3D &s1, const TSegment3D &s2)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, mrpt::math::TSegment3D &s)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const mrpt::math::TSegment3D &s)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, mrpt::math::TTwist2D &o)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const mrpt::math::TTwist2D &o)
 
mrpt::serialization::CArchiveoperator>> (mrpt::serialization::CArchive &in, mrpt::math::TTwist3D &o)
 
mrpt::serialization::CArchiveoperator<< (mrpt::serialization::CArchive &out, const mrpt::math::TTwist3D &o)
 
template<class T1 , class T2 >
bool approximatelyEqual (T1 a, T1 b, T2 epsilon)
 Compare 2 floats and determine whether they are equal. More...
 
template<class T >
bool approximatelyEqual (T a, T b)
 Compare 2 floats and determine whether they are equal. More...
 
template<class T >
absDiff (const T &lhs, const T &rhs)
 Absolute difference between two numbers. More...
 
bool loadVector (std::istream &f, std::vector< int > &d)
 Loads one row of a text file as a numerical std::vector. More...
 
bool loadVector (std::istream &f, std::vector< double > &d)
 Loads one row of a text file as a numerical std::vector. More...
 
void medianFilter (const std::vector< double > &inV, std::vector< double > &outV, int winSize, int numberOfSigmas=2)
 
template<typename T , typename VECTOR >
void linspace (T first, T last, size_t count, VECTOR &out_vector)
 Generates an equidistant sequence of numbers given the first one, the last one and the desired number of points. More...
 
template<class T , T STEP>
std::vector< T > sequenceStdVec (T first, size_t length)
 Generates a sequence of values [first,first+STEP,first+2*STEP,...]. More...
 
template<class VEC1 , class VEC2 >
void normalize (const VEC1 &v, VEC2 &out_v)
 Normalize a vector, such as its norm is the unity. More...
 
template<class VECTOR_OF_VECTORS , class VECTORLIKE >
void extractColumnFromVectorOfVectors (const size_t colIndex, const VECTOR_OF_VECTORS &data, VECTORLIKE &out_column)
 Extract a column from a vector of vectors, and store it in another vector. More...
 
uint64_t factorial64 (unsigned int n)
 Computes the factorial of an integer number and returns it as a 64-bit integer number. More...
 
double factorial (unsigned int n)
 Computes the factorial of an integer number and returns it as a double value (internally it uses logarithms for avoiding overflow). More...
 
std::string MATLAB_plotCovariance2D (const CMatrixFloat &cov22, const CVectorFloat &mean, float stdCount, const std::string &style=std::string("b"), size_t nEllipsePoints=30)
 Generates a string with the MATLAB commands required to plot an confidence interval (ellipse) for a 2D Gaussian ('float' version). More...
 
std::string MATLAB_plotCovariance2D (const CMatrixDouble &cov22, const CVectorDouble &mean, float stdCount, const std::string &style=std::string("b"), size_t nEllipsePoints=30)
 Generates a string with the MATLAB commands required to plot an confidence interval (ellipse) for a 2D Gaussian ('double' version). More...
 
template<typename VECTOR_T , typename At , size_t N>
VECTOR_T & loadVector (VECTOR_T &v, At(&theArray)[N])
 Assignment operator for initializing a std::vector from a C array (The vector will be automatically set to the correct size). More...
 
template<typename T , typename At , size_t N>
std::vector< T > & loadVector (std::vector< T > &v, At(&theArray)[N])
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<class TRIPLET >
bool saveEigenSparseTripletsToFile (const std::string &sFile, std::vector< TRIPLET > &tri)
 Saves to a plain-text file the nonzero entries of a Eigen sparse matrix, represented as a vector of triplets. More...
 
template<typename MATRIX >
mxArrayconvertToMatlab (const MATRIX &mat)
 Convert vectors, arrays and matrices into Matlab vectors/matrices. More...
 
template<typename CONTAINER >
mxArrayconvertVectorToMatlab (const CONTAINER &vec)
 Convert std::vector<> or std::deque<> of numeric types into Matlab vectors. More...
 
template<class T >
void wrapTo2PiInPlace (T &a)
 Modifies the given angle to translate it into the [0,2pi[ range. More...
 
template<class T >
wrapTo2Pi (T a)
 Modifies the given angle to translate it into the [0,2pi[ range. More...
 
template<class T >
wrapToPi (T a)
 Modifies the given angle to translate it into the ]-pi,pi] range. More...
 
template<class T >
void wrapToPiInPlace (T &a)
 Modifies the given angle to translate it into the ]-pi,pi] range. More...
 
template<class VECTOR >
void unwrap2PiSequence (VECTOR &x)
 Modify a sequence of angle values such as no consecutive values have a jump larger than PI in absolute value. More...
 
template<class T >
angDistance (T from, T to)
 Computes the shortest angular increment (or distance) between two planar orientations, such that it is constrained to [-pi,pi] and is correct for any combination of angles (e.g. More...
 
static void four1 (float data[], unsigned long nn, int isign)
 
static void realft (float data[], unsigned long n)
 
static void makewt (int nw, int *ip, FFT_TYPE *w)
 
static void bitrv2 (int n, int *ip, FFT_TYPE *a)
 Copyright(C) 1997 Takuya OOURA (email: ooura.nosp@m.@mmm.nosp@m..t.u-.nosp@m.toky.nosp@m.o.ac..nosp@m.jp). More...
 
static void cftbsub (int n, FFT_TYPE *a, FFT_TYPE *w)
 
static void cftfsub (int n, FFT_TYPE *a, FFT_TYPE *w)
 
static void rftfsub (int n, FFT_TYPE *a, int nc, FFT_TYPE *c)
 
static void rftbsub (int n, FFT_TYPE *a, int nc, FFT_TYPE *c)
 
static void makect (int nc, int *ip, FFT_TYPE *c)
 Copyright(C) 1997 Takuya OOURA (email: ooura.nosp@m.@mmm.nosp@m..t.u-.nosp@m.toky.nosp@m.o.ac..nosp@m.jp). More...
 
static void cdft (int n, int isgn, FFT_TYPE *a, int *ip, FFT_TYPE *w)
 Copyright(C) 1997 Takuya OOURA (email: ooura.nosp@m.@mmm.nosp@m..t.u-.nosp@m.toky.nosp@m.o.ac..nosp@m.jp). More...
 
static void rdft (int n, int isgn, FFT_TYPE *a, int *ip, FFT_TYPE *w)
 
static void rdft2d (int n1, int n2, int isgn, FFT_TYPE **a, FFT_TYPE *t, int *ip, FFT_TYPE *w)
 
static void cdft2d (int n1, int n2, int isgn, FFT_TYPE **a, FFT_TYPE *t, int *ip, FFT_TYPE *w)
 
template<class T >
void removeUnusedVertices (T &poly)
 
template<class T >
void removeRepVertices (T &poly)
 
template<typename T >
void ransac3Dplane_fit (const CMatrixDynamic< T > &allData, const std::vector< size_t > &useIndices, vector< CMatrixDynamic< T >> &fitModels)
 
template<typename T >
void ransac3Dplane_distance (const CMatrixDynamic< T > &allData, const vector< CMatrixDynamic< T >> &testModels, const T distanceThreshold, unsigned int &out_bestModelIndex, std::vector< size_t > &out_inlierIndices)
 
template<typename T >
bool ransac3Dplane_degenerate ([[maybe_unused]] const CMatrixDynamic< T > &allData, [[maybe_unused]] const std::vector< size_t > &useIndices)
 Return "true" if the selected points are a degenerate (invalid) case. More...
 
template<typename T >
void ransac2Dline_fit (const CMatrixDynamic< T > &allData, const std::vector< size_t > &useIndices, vector< CMatrixDynamic< T >> &fitModels)
 
template<typename T >
void ransac2Dline_distance (const CMatrixDynamic< T > &allData, const vector< CMatrixDynamic< T >> &testModels, const T distanceThreshold, unsigned int &out_bestModelIndex, std::vector< size_t > &out_inlierIndices)
 
template<typename T >
bool ransac2Dline_degenerate ([[maybe_unused]] const CMatrixDynamic< T > &allData, [[maybe_unused]] const std::vector< size_t > &useIndices)
 Return "true" if the selected points are a degenerate (invalid) case. More...
 
size_t ransacDatasetSize (const mrpt::maps::CPointsMap &dataset)
 

Variables

static constexpr unsigned char GEOMETRIC_TYPE_POINT = 0
 Object type identifier for TPoint2D or TPoint3D. More...
 
static constexpr unsigned char GEOMETRIC_TYPE_SEGMENT = 1
 Object type identifier for TSegment2D or TSegment3D. More...
 
static constexpr unsigned char GEOMETRIC_TYPE_LINE = 2
 Object type identifier for TLine2D or TLine3D. More...
 
static constexpr unsigned char GEOMETRIC_TYPE_POLYGON = 3
 Object type identifier for TPolygon2D or TPolygon3D. More...
 
static constexpr unsigned char GEOMETRIC_TYPE_PLANE = 4
 Object type identifier for TPlane. More...
 
static constexpr unsigned char GEOMETRIC_TYPE_UNDEFINED = 255
 Object type identifier for empty TObject2D or TObject3D. More...
 

Typedef Documentation

◆ CLevenbergMarquardt

The default name for the LM class is an instantiation for "double".

Definition at line 260 of file CLevenbergMarquardt.h.

◆ CMatrix_u16

using mrpt::math::CMatrix_u16 = typedef CMatrixDynamic<uint16_t>

matrix of uint16_t (non serializable).

See also
CMatrixDouble

Definition at line 600 of file CMatrixDynamic.h.

◆ CMatrix_u8

using mrpt::math::CMatrix_u8 = typedef CMatrixDynamic<uint8_t>

matrix of uint8_t (non serializable).

See also
CMatrixDouble

Definition at line 597 of file CMatrixDynamic.h.

◆ CMatrixBool

using mrpt::math::CMatrixBool = typedef CMatrixDynamic<bool>

Declares a matrix of booleans (non serializable).

See also
CMatrixDouble, CMatrixFloat, CMatrixB

Definition at line 577 of file CMatrixDynamic.h.

◆ CMatrixDouble

using mrpt::math::CMatrixDouble = typedef CMatrixDynamic<double>

Declares a matrix of double numbers (non serializable).

For a serializable version, use math::CMatrixD

See also
CMatrixFloat, CMatrixF, CMatrixD

Definition at line 589 of file CMatrixDynamic.h.

◆ CMatrixDouble12

using mrpt::math::CMatrixDouble12 = typedef CMatrixFixed<double, 1, 2>

Definition at line 375 of file CMatrixFixed.h.

◆ CMatrixDouble12_6

using mrpt::math::CMatrixDouble12_6 = typedef CMatrixFixed<double, 12, 6>

Definition at line 386 of file CMatrixFixed.h.

◆ CMatrixDouble13

using mrpt::math::CMatrixDouble13 = typedef CMatrixFixed<double, 1, 3>

Definition at line 371 of file CMatrixFixed.h.

◆ CMatrixDouble15

using mrpt::math::CMatrixDouble15 = typedef CMatrixFixed<double, 1, 5>

Definition at line 382 of file CMatrixFixed.h.

◆ CMatrixDouble16

using mrpt::math::CMatrixDouble16 = typedef CMatrixFixed<double, 1, 6>

Definition at line 378 of file CMatrixFixed.h.

◆ CMatrixDouble17

using mrpt::math::CMatrixDouble17 = typedef CMatrixFixed<double, 1, 7>

Definition at line 380 of file CMatrixFixed.h.

◆ CMatrixDouble21

using mrpt::math::CMatrixDouble21 = typedef CMatrixFixed<double, 2, 1>

Definition at line 376 of file CMatrixFixed.h.

◆ CMatrixDouble22

using mrpt::math::CMatrixDouble22 = typedef CMatrixFixed<double, 2, 2>

Definition at line 364 of file CMatrixFixed.h.

◆ CMatrixDouble23

using mrpt::math::CMatrixDouble23 = typedef CMatrixFixed<double, 2, 3>

Definition at line 365 of file CMatrixFixed.h.

◆ CMatrixDouble31

using mrpt::math::CMatrixDouble31 = typedef CMatrixFixed<double, 3, 1>

Definition at line 372 of file CMatrixFixed.h.

◆ CMatrixDouble32

using mrpt::math::CMatrixDouble32 = typedef CMatrixFixed<double, 3, 2>

Definition at line 366 of file CMatrixFixed.h.

◆ CMatrixDouble33

using mrpt::math::CMatrixDouble33 = typedef CMatrixFixed<double, 3, 3>
Examples
serialization_json_example/test.cpp.

Definition at line 367 of file CMatrixFixed.h.

◆ CMatrixDouble34

using mrpt::math::CMatrixDouble34 = typedef CMatrixFixed<double, 3, 4>

Definition at line 373 of file CMatrixFixed.h.

◆ CMatrixDouble36

using mrpt::math::CMatrixDouble36 = typedef CMatrixFixed<double, 3, 6>

Definition at line 374 of file CMatrixFixed.h.

◆ CMatrixDouble39

using mrpt::math::CMatrixDouble39 = typedef CMatrixFixed<double, 3, 9>

Definition at line 387 of file CMatrixFixed.h.

◆ CMatrixDouble41

using mrpt::math::CMatrixDouble41 = typedef CMatrixFixed<double, 4, 1>

Definition at line 383 of file CMatrixFixed.h.

◆ CMatrixDouble43

using mrpt::math::CMatrixDouble43 = typedef CMatrixFixed<double, 4, 3>

Definition at line 384 of file CMatrixFixed.h.

◆ CMatrixDouble44

using mrpt::math::CMatrixDouble44 = typedef CMatrixFixed<double, 4, 4>

Definition at line 368 of file CMatrixFixed.h.

◆ CMatrixDouble51

using mrpt::math::CMatrixDouble51 = typedef CMatrixFixed<double, 5, 1>

Definition at line 381 of file CMatrixFixed.h.

◆ CMatrixDouble61

using mrpt::math::CMatrixDouble61 = typedef CMatrixFixed<double, 6, 1>

Definition at line 377 of file CMatrixFixed.h.

◆ CMatrixDouble66

using mrpt::math::CMatrixDouble66 = typedef CMatrixFixed<double, 6, 6>

Definition at line 369 of file CMatrixFixed.h.

◆ CMatrixDouble6_12

using mrpt::math::CMatrixDouble6_12 = typedef CMatrixFixed<double, 6, 12>

Definition at line 385 of file CMatrixFixed.h.

◆ CMatrixDouble71

using mrpt::math::CMatrixDouble71 = typedef CMatrixFixed<double, 7, 1>

Definition at line 379 of file CMatrixFixed.h.

◆ CMatrixDouble77

using mrpt::math::CMatrixDouble77 = typedef CMatrixFixed<double, 7, 7>

Definition at line 370 of file CMatrixFixed.h.

◆ CMatrixDouble93

using mrpt::math::CMatrixDouble93 = typedef CMatrixFixed<double, 9, 3>

Definition at line 388 of file CMatrixFixed.h.

◆ CMatrixFloat

using mrpt::math::CMatrixFloat = typedef CMatrixDynamic<float>

Declares a matrix of float numbers (non serializable).

For a serializable version, use math::CMatrixF

See also
CMatrixDouble, CMatrixF, CMatrixD

Definition at line 583 of file CMatrixDynamic.h.

◆ CMatrixFloat12

using mrpt::math::CMatrixFloat12 = typedef CMatrixFixed<float, 1, 2>

Definition at line 399 of file CMatrixFixed.h.

◆ CMatrixFloat13

using mrpt::math::CMatrixFloat13 = typedef CMatrixFixed<float, 1, 3>

Definition at line 397 of file CMatrixFixed.h.

◆ CMatrixFloat15

using mrpt::math::CMatrixFloat15 = typedef CMatrixFixed<float, 1, 5>

Definition at line 406 of file CMatrixFixed.h.

◆ CMatrixFloat16

using mrpt::math::CMatrixFloat16 = typedef CMatrixFixed<float, 1, 6>

Definition at line 402 of file CMatrixFixed.h.

◆ CMatrixFloat17

using mrpt::math::CMatrixFloat17 = typedef CMatrixFixed<float, 1, 7>

Definition at line 404 of file CMatrixFixed.h.

◆ CMatrixFloat21

using mrpt::math::CMatrixFloat21 = typedef CMatrixFixed<float, 2, 1>

Definition at line 400 of file CMatrixFixed.h.

◆ CMatrixFloat22

using mrpt::math::CMatrixFloat22 = typedef CMatrixFixed<float, 2, 2>

Definition at line 390 of file CMatrixFixed.h.

◆ CMatrixFloat23

using mrpt::math::CMatrixFloat23 = typedef CMatrixFixed<float, 2, 3>

Definition at line 391 of file CMatrixFixed.h.

◆ CMatrixFloat31

using mrpt::math::CMatrixFloat31 = typedef CMatrixFixed<float, 3, 1>

Definition at line 398 of file CMatrixFixed.h.

◆ CMatrixFloat32

using mrpt::math::CMatrixFloat32 = typedef CMatrixFixed<float, 3, 2>

Definition at line 392 of file CMatrixFixed.h.

◆ CMatrixFloat33

using mrpt::math::CMatrixFloat33 = typedef CMatrixFixed<float, 3, 3>

Definition at line 393 of file CMatrixFixed.h.

◆ CMatrixFloat44

using mrpt::math::CMatrixFloat44 = typedef CMatrixFixed<float, 4, 4>

Definition at line 394 of file CMatrixFixed.h.

◆ CMatrixFloat51

using mrpt::math::CMatrixFloat51 = typedef CMatrixFixed<float, 5, 1>

Definition at line 405 of file CMatrixFixed.h.

◆ CMatrixFloat61

using mrpt::math::CMatrixFloat61 = typedef CMatrixFixed<float, 6, 1>

Definition at line 401 of file CMatrixFixed.h.

◆ CMatrixFloat66

using mrpt::math::CMatrixFloat66 = typedef CMatrixFixed<float, 6, 6>

Definition at line 395 of file CMatrixFixed.h.

◆ CMatrixFloat71

using mrpt::math::CMatrixFloat71 = typedef CMatrixFixed<float, 7, 1>

Definition at line 403 of file CMatrixFixed.h.

◆ CMatrixFloat77

using mrpt::math::CMatrixFloat77 = typedef CMatrixFixed<float, 7, 7>

Definition at line 396 of file CMatrixFixed.h.

◆ CMatrixLongDouble

Declares a matrix of "long doubles" (non serializable), or of "doubles" if the compiler does not support "long double".

See also
CMatrixDouble, CMatrixFloat

Definition at line 613 of file CMatrixDynamic.h.

◆ CMatrixUInt

using mrpt::math::CMatrixUInt = typedef CMatrixDynamic<unsigned int>

Declares a matrix of unsigned ints (non serializable).

See also
CMatrixDouble, CMatrixFloat

Definition at line 594 of file CMatrixDynamic.h.

◆ CQuaternionDouble

using mrpt::math::CQuaternionDouble = typedef CQuaternion<double>

A quaternion of data type "double".

Definition at line 540 of file CQuaternion.h.

◆ CQuaternionFloat

using mrpt::math::CQuaternionFloat = typedef CQuaternion<float>

A quaternion of data type "float".

Definition at line 542 of file CQuaternion.h.

◆ CVectorDouble

using mrpt::math::CVectorDouble = typedef CVectorDynamic<double>

Definition at line 303 of file CVectorDynamic.h.

◆ CVectorFixed

template<typename T , std::size_t N>
using mrpt::math::CVectorFixed = typedef CMatrixFixed<T, N, 1>

CVectorFixed is an array for numeric types supporting several mathematical operations (actually, just a wrapper on Eigen::Matrix<T,N,1>)

See also
CVectorFixedFloat, CVectorFixedDouble, CArray

Definition at line 24 of file CVectorFixed.h.

◆ CVectorFixedDouble

template<std::size_t N>
using mrpt::math::CVectorFixedDouble = typedef CVectorFixed<double, N>

Specialization of CVectorFixed for double numbers.

See also
CVectorFixed

Definition at line 32 of file CVectorFixed.h.

◆ CVectorFixedFloat

template<std::size_t N>
using mrpt::math::CVectorFixedFloat = typedef CVectorFixed<float, N>

Specialization of CVectorFixed for float numbers.

See also
CVectorFixed

Definition at line 28 of file CVectorFixed.h.

◆ CVectorFloat

using mrpt::math::CVectorFloat = typedef CVectorDynamic<float>

Definition at line 302 of file CVectorDynamic.h.

◆ FFT_TYPE

using mrpt::math::FFT_TYPE = typedef float

Copyright(C) 1997 Takuya OOURA (email: ooura.nosp@m.@mmm.nosp@m..t.u-.nosp@m.toky.nosp@m.o.ac..nosp@m.jp).

You may use, copy, modify this code for any purpose and without fee. You may distribute this ORIGINAL package.

Definition at line 148 of file fourier.cpp.

◆ TPlane3D

using mrpt::math::TPlane3D = typedef TPlane

Definition at line 94 of file TPlane.h.

◆ TPoint2Df

typedef TPoint2D_< float > mrpt::math::TPoint2Df

Definition at line 214 of file TPoint2D.h.

◆ TPoint3D

typedef TPoint3D_< double > mrpt::math::TPoint3D

Lightweight 3D point.

Allows coordinate access using [] operator. (1-byte memory packed, no padding).

See also
mrpt::poses::CPoint3D, mrpt::math::TPoint3Df

Definition at line 268 of file TPoint3D.h.

◆ TPoint3Df

typedef TPoint3D_< float > mrpt::math::TPoint3Df

Definition at line 269 of file TPoint3D.h.

◆ TVector2D

Useful type alias for double 2-vectors.

Definition at line 217 of file TPoint2D.h.

◆ TVector2Df

Useful type alias for float 2-vectors.

Definition at line 219 of file TPoint2D.h.

◆ TVector3D

Useful type alias for 3-vectors.

(1-byte memory packed, no padding)

Definition at line 273 of file TPoint3D.h.

◆ TVector3Df

Definition at line 274 of file TPoint3D.h.

Enumeration Type Documentation

◆ TConstructorFlags_Matrices

For usage in one of the constructors of CMatrixFixed or CMatrixDynamic (and derived classes), if it's not required to fill it with zeros at the constructor to save time.

Enumerator
UNINITIALIZED_MATRIX 

Definition at line 55 of file math_frwds.h.

◆ TConstructorFlags_Quaternions

Enumerator
UNINITIALIZED_QUATERNION 

Definition at line 20 of file CQuaternion.h.

Function Documentation

◆ absDiff()

template<class T >
T mrpt::math::absDiff ( const T &  lhs,
const T &  rhs 
)

◆ adjustRange()

template<class CONTAINER >
void mrpt::math::adjustRange ( CONTAINER &  m,
const typename CONTAINER::Scalar  minVal,
const typename CONTAINER::Scalar  maxVal 
)

Adjusts the range of all the elements such as the minimum and maximum values being those supplied by the user.


Definition at line 307 of file ops_containers.h.

References minimum_maximum().

◆ approximatelyEqual() [1/2]

template<class T >
bool mrpt::math::approximatelyEqual ( a,
b 
)

Compare 2 floats and determine whether they are equal.

Returns
True if equal, false otherwise
Parameters
aFist num
bSecond num

Definition at line 47 of file math/include/mrpt/math/utils.h.

References approximatelyEqual().

◆ approximatelyEqual() [2/2]

template<class T1 , class T2 >
bool mrpt::math::approximatelyEqual ( T1  a,
T1  b,
T2  epsilon 
)

Compare 2 floats and determine whether they are equal.

Returns
True if equal, false otherwise
Parameters
aFist num
bSecond num
epsilonDifference below which a, b are considered equal

Definition at line 36 of file math/include/mrpt/math/utils.h.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::addScanMatchingEdges(), approximatelyEqual(), and mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::computeDominantEigenVector().

◆ bitrv2()

static void mrpt::math::bitrv2 ( int  n,
int *  ip,
FFT_TYPE a 
)
static

Copyright(C) 1997 Takuya OOURA (email: ooura.nosp@m.@mmm.nosp@m..t.u-.nosp@m.toky.nosp@m.o.ac..nosp@m.jp).

You may use, copy, modify this code for any purpose and without fee. You may distribute this ORIGINAL package.

Definition at line 456 of file fourier.cpp.

Referenced by cdft(), makewt(), and rdft().

◆ cdft()

static void mrpt::math::cdft ( int  n,
int  isgn,
FFT_TYPE a,
int *  ip,
FFT_TYPE w 
)
static

Copyright(C) 1997 Takuya OOURA (email: ooura.nosp@m.@mmm.nosp@m..t.u-.nosp@m.toky.nosp@m.o.ac..nosp@m.jp).

You may use, copy, modify this code for any purpose and without fee. You may distribute this ORIGINAL package.

Definition at line 523 of file fourier.cpp.

References bitrv2(), cftbsub(), cftfsub(), and makewt().

Referenced by cdft2d(), and rdft2d().

◆ cdft2d()

static void mrpt::math::cdft2d ( int  n1,
int  n2,
int  isgn,
FFT_TYPE **  a,
FFT_TYPE t,
int *  ip,
FFT_TYPE w 
)
static
Copyright(C) 1997 Takuya OOURA (email: ooura@mmm.t.u-tokyo.ac.jp).
You may use, copy, modify this code for any purpose and
without fee. You may distribute this ORIGINAL package.

-----— Complex DFT (Discrete Fourier Transform) -----— [definition] <case1> X[k1][k2] = sum_j1=0^n1-1 sum_j2=0^n2-1 x[j1][j2] * exp(2*pi*i*j1*k1/n1) * exp(2*pi*i*j2*k2/n2), 0<=k1<n1, 0<=k2<n2 <case2> X[k1][k2] = sum_j1=0^n1-1 sum_j2=0^n2-1 x[j1][j2] * exp(-2*pi*i*j1*k1/n1) * exp(-2*pi*i*j2*k2/n2), 0<=k1<n1, 0<=k2<n2 (notes: sum_j=0^n-1 is a summation from j=0 to n-1) [usage] <case1> ip[0] = 0; // first time only cdft2d(n1, 2*n2, 1, a, t, ip, w); <case2> ip[0] = 0; // first time only cdft2d(n1, 2*n2, -1, a, t, ip, w); [parameters] n1 :data length (int) n1 >= 1, n1 = power of 2 2*n2 :data length (int) n2 >= 1, n2 = power of 2 a[0...n1-1][0...2*n2-1] :input/output data (double **) input data a[j1][2*j2] = Re(x[j1][j2]), a[j1][2*j2+1] = Im(x[j1][j2]), 0<=j1<n1, 0<=j2<n2 output data a[k1][2*k2] = Re(X[k1][k2]), a[k1][2*k2+1] = Im(X[k1][k2]), 0<=k1<n1, 0<=k2<n2 t[0...2*n1-1] :work area (double *) ip[0...*] :work area for bit reversal (int *) length of ip >= 2+sqrt(n) ; if n % 4 == 0 2+sqrt(n/2); otherwise (n = max(n1, n2)) ip[0],ip[1] are pointers of the cos/sin table. w[0...*] :cos/sin table (double *) length of w >= max(n1/2, n2/2) w[],ip[] are initialized if ip[0] == 0. [remark] Inverse of cdft2d(n1, 2*n2, -1, a, t, ip, w); is cdft2d(n1, 2*n2, 1, a, t, ip, w); for (j1 = 0; j1 <= n1 - 1; j1++) { for (j2 = 0; j2 <= 2 * n2 - 1; j2++) { a[j1][j2] *= 1.0 / (n1 * n2); } }

Definition at line 887 of file fourier.cpp.

References cdft(), and makewt().

Referenced by dft2_complex(), and idft2_complex().

◆ cftbsub()

static void mrpt::math::cftbsub ( int  n,
FFT_TYPE a,
FFT_TYPE w 
)
static

Definition at line 157 of file fourier.cpp.

Referenced by cdft(), and rdft().

◆ cftfsub()

static void mrpt::math::cftfsub ( int  n,
FFT_TYPE a,
FFT_TYPE w 
)
static

Definition at line 277 of file fourier.cpp.

Referenced by cdft(), and rdft().

◆ containerFromPoseOrPoint()

template<class CONTAINER , class POINT_OR_POSE >
CONTAINER& mrpt::math::containerFromPoseOrPoint ( CONTAINER &  C,
const POINT_OR_POSE &  p 
)

Conversion of poses to MRPT containers (vector/matrix)

Definition at line 24 of file point_poses2vectors.h.

◆ countCommonElements()

template<class CONTAINER1 , class CONTAINER2 >
size_t mrpt::math::countCommonElements ( const CONTAINER1 &  a,
const CONTAINER2 &  b 
)

Counts the number of elements that appear in both STL-like containers (comparison through the == operator) It is assumed that no repeated elements appear within each of the containers.


Definition at line 295 of file ops_containers.h.

Referenced by mrpt::slam::CRangeBearingKFSLAM::computeOffDiagonalBlocksApproximationError().

◆ cov()

template<class MATRIX >
CMatrixDouble mrpt::math::cov ( const MATRIX &  v)

Computes the covariance matrix from a list of samples in an NxM matrix, where each row is a sample, so the covariance is MxM.

Parameters
vThe set of data, as a NxM matrix.
out_covThe output MxM matrix for the estimated covariance matrix.
See also
math::mean,math::stddev, math::cov

Definition at line 149 of file ops_matrices.h.

References meanAndCovMat().

Referenced by mrpt::poses::CPosePDFGaussianInf::bayesianFusion(), mrpt::detectors::CFaceDetection::checkIfFacePlaneCov(), mrpt::poses::CPose3DPDFGaussianInf::copyFrom(), mrpt::poses::CPosePDFSOG::copyFrom(), mrpt::apps::MonteCarloLocalization_Base::do_pf_localization(), mrpt::random::CRandomGenerator::drawDefinitePositiveMatrix(), mrpt::random::CRandomGenerator::drawGaussianMultivariate(), mrpt::random::CRandomGenerator::drawGaussianMultivariateMany(), mrpt::poses::CPose3DPDFGaussianInf::drawManySamples(), mrpt::poses::CPosePDFGaussianInf::drawManySamples(), mrpt::poses::CPose3DPDFGaussianInf::drawSingleSample(), mrpt::poses::CPosePDFGaussianInf::drawSingleSample(), mrpt::poses::CPosePDFGaussianInf::evaluateNormalizedPDF(), PosePDFGaussTests::generateRandomPose2DPDF(), Pose3DPDFGaussTests::generateRandomPose3DPDF(), Pose3DQuatPDFGaussTests::generateRandomPose3DPDF(), mrpt::math::CProbabilityDensityFunction< CPose2D, 3 >::getCovariance(), mrpt::poses::CPointPDFParticles::getCovarianceAndMean(), mrpt::poses::CPose3DPDFParticles::getCovarianceAndMean(), mrpt::poses::CPosePDFParticles::getCovarianceAndMean(), mrpt::poses::CPosePDFSOG::getCovarianceAndMean(), mrpt::math::CProbabilityDensityFunction< CPose2D, 3 >::getCovarianceDynAndMean(), mrpt::poses::CPosePDFSOG::getMostLikelyCovarianceAndMean(), mrpt::poses::CPosePDFSOG::inverse(), mahalanobisDistance(), mahalanobisDistance2(), mahalanobisDistance2AndLogPDF(), mahalanobisDistance2AndPDF(), mrpt::poses::CPose3DPDFGaussianInf::mahalanobisDistanceTo(), MATLAB_plotCovariance2D(), mrpt::poses::CPosePDFSOG::mergeModes(), normalPDF(), mrpt::obs::CActionRobotMovement2D::prepareFastDrawSingleSample_modelGaussian(), mrpt::slam::CMetricMapBuilderRBPF::processActionObservation(), mrpt::random::randomNormalMultiDimensional(), mrpt::random::randomNormalMultiDimensionalMany(), run_test_pf_localization(), mrpt::slam::CRangeBearingKFSLAM2D::saveMapAndPath2DRepresentationAsMATLABFile(), mrpt::slam::CRangeBearingKFSLAM::saveMapAndPath2DRepresentationAsMATLABFile(), mrpt::maps::CLandmarksMap::saveToMATLABScript2D(), mrpt::poses::CPoseRandomSampler::setPosePDF(), and TEST().

◆ covVector()

template<class VECTOR_OF_VECTOR , class RETURN_MATRIX >
RETURN_MATRIX mrpt::math::covVector ( const VECTOR_OF_VECTOR &  v)
inline

Computes the covariance matrix from a list of values given as a vector of vectors, where each row is a sample.

Parameters
vThe set of data, as a vector of N vectors of M elements.
out_covThe output MxM matrix for the estimated covariance matrix.
Template Parameters
RETURN_MATRIXThe type of the returned matrix, e.g. Eigen::MatrixXd
See also
math::mean,math::stddev, math::cov, meanAndCovVec

Definition at line 418 of file ops_containers.h.

References meanAndCovVec().

◆ cumsum() [1/2]

template<class CONTAINER >
CONTAINER mrpt::math::cumsum ( const CONTAINER &  in_data)
inline

Computes the cumulative sum of all the elements.

See also
sum

Definition at line 120 of file ops_containers.h.

References cumsum().

◆ cumsum() [2/2]

template<class CONTAINER1 , class CONTAINER2 >
void mrpt::math::cumsum ( const CONTAINER1 &  in_data,
CONTAINER2 &  out_cumsum 
)
inline

Definition at line 112 of file ops_containers.h.

Referenced by confidenceIntervals(), and cumsum().

◆ cumsum_tmpl()

template<class CONTAINER1 , class CONTAINER2 >
void mrpt::math::cumsum_tmpl ( const CONTAINER1 &  in_data,
CONTAINER2 &  out_cumsum 
)
inline

Computes the cumulative sum of all the elements, saving the result in another container.

This works for both matrices (even mixing their types) and vectores/arrays (even mixing types), and even to store the cumsum of any matrix into any vector/array, but not in opposite direction.

See also
sum

Definition at line 101 of file ops_containers.h.

References resizeLike().

◆ dotProduct() [1/2]

template<class CONTAINER1 , class CONTAINER2 >
CONTAINER1::Scalar mrpt::math::dotProduct ( const CONTAINER1 &  v1,
const CONTAINER1 &  v2 
)
inline

v1*v2: The dot product of two containers (vectors/arrays/matrices)

Definition at line 200 of file ops_containers.h.

◆ dotProduct() [2/2]

template<size_t N, class T , class U , class V >
T mrpt::math::dotProduct ( const U &  v1,
const V &  v2 
)
inline

v1*v2: The dot product of any two objects supporting []

Definition at line 208 of file ops_containers.h.

◆ extractSubmatrixSymmetrical()

template<typename MAT , typename MATRIX >
void mrpt::math::extractSubmatrixSymmetrical ( const MAT &  m,
const std::vector< size_t > &  indices,
MATRIX &  out 
)

Get a submatrix from a square matrix, by collecting the elements M(idxs,idxs), where idxs is the sequence of indices passed as argument.

A perfect application of this method is in extracting covariance matrices of a subset of variables from the full covariance matrix.

See also
extractSubmatrix, extractSubmatrixSymmetricalBlocks

Definition at line 310 of file ops_matrices.h.

References out.

Referenced by mrpt::bayes::CKalmanFilterCapable< 7, 3, 3, 7 >::runOneKalmanIteration(), and TEST().

◆ extractSubmatrixSymmetricalBlocks()

template<std::size_t BLOCKSIZE, typename MAT , typename MATRIX >
void mrpt::math::extractSubmatrixSymmetricalBlocks ( const MAT &  m,
const std::vector< size_t > &  block_indices,
MATRIX &  out 
)

Get a submatrix from a square matrix, by collecting the elements M(idxs,idxs), where idxs is a sequence {block_indices(i):block_indices(i)+BLOCKSIZE-1} for all "i" up to the size of block_indices.

A perfect application of this method is in extracting covariance matrices of a subset of variables from the full covariance matrix.

See also
extractSubmatrix, extractSubmatrixSymmetrical

Definition at line 230 of file ops_matrices.h.

References nanoflann::BLOCKSIZE, and out.

◆ extractSubmatrixSymmetricalBlocksDyn()

template<typename MAT , typename MATRIX >
void mrpt::math::extractSubmatrixSymmetricalBlocksDyn ( const MAT &  m,
const std::size_t  BLOCKSIZE,
const std::vector< size_t > &  block_indices,
MATRIX &  out 
)

Definition at line 266 of file ops_matrices.h.

References nanoflann::BLOCKSIZE, and out.

Referenced by mrpt::slam::joint_pdf_metric().

◆ four1()

static void mrpt::math::four1 ( float  data[],
unsigned long  nn,
int  isign 
)
static

Definition at line 32 of file fourier.cpp.

References mrpt::opengl::internal::data.

Referenced by realft().

◆ getColumnAccessor() [1/4]

template<typename MAT >
CConstMatrixColumnAccessor<MAT> mrpt::math::getColumnAccessor ( const MAT &  m,
size_t  colIdx 
)
inline

Definition at line 678 of file matrix_adaptors.h.

◆ getColumnAccessor() [2/4]

template<typename MAT >
CConstMatrixColumnAccessorExtended<MAT> mrpt::math::getColumnAccessor ( const MAT &  m,
size_t  colIdx,
size_t  offset,
size_t  space = 1 
)
inline

Definition at line 739 of file matrix_adaptors.h.

◆ getColumnAccessor() [3/4]

template<typename MAT >
CMatrixColumnAccessor<MAT> mrpt::math::getColumnAccessor ( MAT &  m,
size_t  colIdx 
)
inline

Definition at line 547 of file matrix_adaptors.h.

◆ getColumnAccessor() [4/4]

template<typename MAT >
CMatrixColumnAccessorExtended<MAT> mrpt::math::getColumnAccessor ( MAT &  m,
size_t  colIdx,
size_t  offset,
size_t  space = 1 
)
inline

Definition at line 622 of file matrix_adaptors.h.

◆ getRowAccessor() [1/4]

template<typename MAT >
CConstMatrixRowAccessor<MAT> mrpt::math::getRowAccessor ( const MAT &  m,
size_t  rowIdx 
)
inline

Definition at line 414 of file matrix_adaptors.h.

◆ getRowAccessor() [2/4]

template<typename MAT >
CConstMatrixRowAccessorExtended<MAT> mrpt::math::getRowAccessor ( const MAT &  m,
size_t  rowIdx,
size_t  offset,
size_t  space = 1 
)
inline

Definition at line 476 of file matrix_adaptors.h.

◆ getRowAccessor() [3/4]

template<typename MAT >
CMatrixRowAccessor<MAT> mrpt::math::getRowAccessor ( MAT &  m,
size_t  rowIdx 
)
inline

Definition at line 279 of file matrix_adaptors.h.

◆ getRowAccessor() [4/4]

template<typename MAT >
CMatrixRowAccessorExtended<MAT> mrpt::math::getRowAccessor ( MAT &  m,
size_t  rowIdx,
size_t  offset,
size_t  space = 1 
)
inline

Definition at line 356 of file matrix_adaptors.h.

◆ histogram()

template<class CONTAINER >
std::vector<double> mrpt::math::histogram ( const CONTAINER &  v,
double  limit_min,
double  limit_max,
size_t  number_bins,
bool  do_normalization = false,
std::vector< double > *  out_bin_centers = nullptr 
)

Computes the normalized or normal histogram of a sequence of numbers given the number of bins and the limits.

In any case this is a "linear" histogram, i.e. for matrices, all the elements are taken as if they were a plain sequence, not taking into account they were in columns or rows. If desired, out_bin_centers can be set to receive the bins centers.

Definition at line 64 of file ops_containers.h.

References mrpt::math::CHistogram::add(), mrpt::math::CHistogram::getHistogram(), and mrpt::math::CHistogram::getHistogramNormalized().

Referenced by confidenceIntervals().

◆ homogeneousMatrixInverse() [1/3]

template<class IN_ROTMATRIX , class IN_XYZ , class OUT_ROTMATRIX , class OUT_XYZ >
void mrpt::math::homogeneousMatrixInverse ( const IN_ROTMATRIX &  in_R,
const IN_XYZ &  in_xyz,
OUT_ROTMATRIX &  out_R,
OUT_XYZ &  out_xyz 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 74 of file homog_matrices.h.

References ASSERT_, MRPT_END, and MRPT_START.

◆ homogeneousMatrixInverse() [2/3]

template<class MATRIXLIKE1 , class MATRIXLIKE2 >
void mrpt::math::homogeneousMatrixInverse ( const MATRIXLIKE1 &  M,
MATRIXLIKE2 &  out_inverse_M 
)

Efficiently compute the inverse of a 4x4 homogeneous matrix by only transposing the rotation 3x3 part and solving the translation with dot products.

This is a generic template which works with: MATRIXLIKE: CMatrixDynamic, CMatrixFixed

Definition at line 22 of file homog_matrices.h.

References ASSERT_, MRPT_END, and MRPT_START.

Referenced by mrpt::math::TPose3D::getInverseHomogeneousMatrix(), mrpt::poses::CPoseOrPoint< CPose2D, DIM >::getInverseHomogeneousMatrix(), mrpt::poses::CPose3D::inverse(), mrpt::poses::CPose3D::inverseComposeFrom(), and mrpt::obs::detail::unprojectInto().

◆ homogeneousMatrixInverse() [3/3]

template<class MATRIXLIKE >
void mrpt::math::homogeneousMatrixInverse ( MATRIXLIKE &  M)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 100 of file homog_matrices.h.

References ASSERTDEB_.

◆ internalAssertEigenDefined()

template<typename DER >
void mrpt::math::internalAssertEigenDefined ( )

Issues a static_assert() error if trying to compile a method that requires Eigen headers, without including them.

Definition at line 443 of file MatrixVectorBase.h.

◆ kmeans()

template<class LIST_OF_VECTORS1 , class LIST_OF_VECTORS2 >
double mrpt::math::kmeans ( const size_t  k,
const LIST_OF_VECTORS1 &  points,
std::vector< int > &  assignments,
LIST_OF_VECTORS2 *  out_centers = nullptr,
const size_t  attempts = 3 
)
inline

k-means algorithm to cluster a list of N points of arbitrary dimensionality into exactly K clusters.

The list of input points can be any template CONTAINER<POINT> with:

  • CONTAINER can be: Any STL container: std::vector,std::list,std::deque,...
  • POINT can be:
    • std::vector<double/float>
    • CVectorFixedDouble<N> / CVectorFixedFloat<N>
Parameters
k[IN] Number of cluster to look for.
points[IN] The list of N input points. It can be any STL-like containers of std::vector<float/double>, for example a std::vector<mrpt::math::CVectorDouble>, a std::list<CVectorFloat>, etc...
assignments[OUT] At output it will have a number [0,k-1] for each of the N input points.
out_centers[OUT] If not nullptr, at output will have the centers of each group. Can be of any of the supported types of "points", but the basic coordinates should be float or double exactly as in "points".
attempts[IN] Number of attempts.
See also
A more advanced algorithm, see: kmeanspp
Note
Uses the kmeans++ implementation by David Arthur (2009, http://www.stanford.edu/~darthur/kmpp.zip).

Definition at line 122 of file include/mrpt/math/kmeans.h.

References mrpt::math::detail::stub_kmeans().

◆ kmeanspp()

template<class LIST_OF_VECTORS1 , class LIST_OF_VECTORS2 = LIST_OF_VECTORS1>
double mrpt::math::kmeanspp ( const size_t  k,
const LIST_OF_VECTORS1 &  points,
std::vector< int > &  assignments,
LIST_OF_VECTORS2 *  out_centers = nullptr,
const size_t  attempts = 3 
)
inline

k-means++ algorithm to cluster a list of N points of arbitrary dimensionality into exactly K clusters.

The list of input points can be any template CONTAINER<POINT> with:

  • CONTAINER can be: Any STL container: std::vector,std::list,std::deque,...
  • POINT can be:
    • std::vector<double/float>
    • CVectorFixedDouble<N> / CVectorFixedFloat<N>
Parameters
k[IN] Number of cluster to look for.
points[IN] The list of N input points. It can be any STL-like containers of std::vector<float/double>, for example a std::vector<mrpt::math::CVectorDouble>, a std::list<CVectorFloat>, etc...
assignments[OUT] At output it will have a number [0,k-1] for each of the N input points.
out_centers[OUT] If not nullptr, at output will have the centers of each group. Can be of any of the supported types of "points", but the basic coordinates should be float or double exactly as in "points".
attempts[IN] Number of attempts.
See also
The standard kmeans algorithm, see: kmeans
Note
Uses the kmeans++ implementation by David Arthur (2009, http://www.stanford.edu/~darthur/kmpp.zip).

Definition at line 157 of file include/mrpt/math/kmeans.h.

References mrpt::math::detail::stub_kmeans().

Referenced by find_chessboard_corners_multiple().

◆ laplacian()

template<typename MATIN , typename MATOUT >
void mrpt::math::laplacian ( const MATIN &  g,
MATOUT &  ret 
)

Computes the Laplacian of a square graph weight matrix.

The laplacian matrix is L = D - W, with D a diagonal matrix with the degree of each node, W the edge weights.

Definition at line 207 of file ops_matrices.h.

Referenced by mrpt::graphs::CGraphPartitioner< GRAPH_MATRIX, num_t >::SpectralBisection(), and TEST().

◆ makect()

static void mrpt::math::makect ( int  nc,
int *  ip,
FFT_TYPE c 
)
static

Copyright(C) 1997 Takuya OOURA (email: ooura.nosp@m.@mmm.nosp@m..t.u-.nosp@m.toky.nosp@m.o.ac..nosp@m.jp).

You may use, copy, modify this code for any purpose and without fee. You may distribute this ORIGINAL package.

Definition at line 431 of file fourier.cpp.

Referenced by rdft(), and rdft2d().

◆ makewt()

static void mrpt::math::makewt ( int  nw,
int *  ip,
FFT_TYPE w 
)
static

Definition at line 397 of file fourier.cpp.

References bitrv2().

Referenced by cdft(), cdft2d(), rdft(), and rdft2d().

◆ mat2eig()

template<class MAT >
auto mrpt::math::mat2eig ( const MAT &  m,
typename MAT::eigen_t *  = nullptr 
)

Definition at line 26 of file mat2eig.h.

◆ maximum() [1/3]

template<class CONTAINER , int = CONTAINER::is_mrpt_type>
CONTAINER::Scalar mrpt::math::maximum ( const CONTAINER &  v)
inline

◆ maximum() [2/3]

template<class Derived >
Derived::Scalar mrpt::math::maximum ( const Eigen::MatrixBase< Derived > &  v)
inline

Definition at line 149 of file ops_containers.h.

◆ maximum() [3/3]

template<typename T >
T mrpt::math::maximum ( const std::vector< T > &  v)
inline

Definition at line 160 of file ops_containers.h.

References ASSERT_, and mrpt::keep_max().

◆ mean()

template<class CONTAINER >
double mrpt::math::mean ( const CONTAINER &  v)
inline

Computes the mean value of a vector.

Returns
The mean, as a double number.
See also
math::stddev,math::meanAndStd

Definition at line 244 of file ops_containers.h.

References sum().

Referenced by mrpt::slam::CGridMapAligner::AlignPDF_robustMatch(), aux_add3DpointWithEigenVectors(), mrpt::vision::pnp::rpnp::calcampose(), confidenceIntervals(), mrpt::poses::CPosePDFSOG::copyFrom(), mrpt::random::CRandomGenerator::drawGaussian1D(), mrpt::random::CRandomGenerator::drawGaussian1DMatrix(), mrpt::random::CRandomGenerator::drawGaussian1DVector(), mrpt::random::CRandomGenerator::drawGaussianMultivariate(), mrpt::random::CRandomGenerator::drawGaussianMultivariateMany(), mrpt::poses::CPointPDFParticles::getCovarianceAndMean(), mrpt::math::CProbabilityDensityFunction< CPose2D, 3 >::getCovarianceAndMean(), mrpt::poses::CPose3DPDFParticles::getCovarianceAndMean(), mrpt::poses::CPose3DPDFSOG::getCovarianceAndMean(), mrpt::poses::CPosePDFParticles::getCovarianceAndMean(), mrpt::graphslam::TSlidingWindow::getStdDev(), mrpt::maps::CGasConcentrationGridMap2D::internal_insertObservation(), mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::internal_recursive_split(), mrpt::poses::CPosePDFSOG::inverse(), MATLAB_plotCovariance2D(), mrpt::random::matrixRandomNormal(), mrpt::poses::CPosePDFSOG::mergeModes(), mrpt::slam::PF_implementation< mrpt::math::TPose3D, CMonteCarloLocalization3D, mrpt::bayes::particle_storage_mode::VALUE >::PF_SLAM_implementation_pfAuxiliaryPFStandardAndOptimal(), mrpt::hmtslam::CLSLAM_RBPF_2DLASER::prediction_and_update_pfAuxiliaryPFOptimal(), mrpt::apps::CGridMapAlignerApp::run(), mrpt::apps::KFSLAMApp::Run_KF_SLAM(), mrpt::slam::CRangeBearingKFSLAM2D::saveMapAndPath2DRepresentationAsMATLABFile(), mrpt::slam::CRangeBearingKFSLAM::saveMapAndPath2DRepresentationAsMATLABFile(), mrpt::maps::CWirelessPowerGridMap2D::serializeFrom(), mrpt::maps::CGasConcentrationGridMap2D::serializeFrom(), mrpt::graphs::CGraphPartitioner< GRAPH_MATRIX, num_t >::SpectralBisection(), TEST_F(), and mrpt::random::vectorRandomNormal().

◆ meanAndCovMat()

template<class MAT_IN , class VECTOR , class MAT_OUT >
void mrpt::math::meanAndCovMat ( const MAT_IN &  v,
VECTOR &  out_mean,
MAT_OUT &  out_cov 
)

Computes the mean vector and covariance from a list of samples in an NxM matrix, where each row is a sample, so the covariance is MxM.

Parameters
vThe set of data as a NxM matrix, of types: CMatrixDynamic or CMatrixFixed
out_meanThe output M-vector for the estimated mean.
out_covThe output MxM matrix for the estimated covariance matrix, this can also be either a fixed-size of dynamic size matrix.
See also
mrpt::math::meanAndCovVec, math::mean,math::stddev, math::cov

Definition at line 80 of file ops_matrices.h.

References ASSERTMSG_, and mrpt::square().

Referenced by cov().

◆ meanAndCovVec()

template<class VECTOR_OF_VECTOR , class VECTORLIKE , class MATRIXLIKE >
void mrpt::math::meanAndCovVec ( const VECTOR_OF_VECTOR &  v,
VECTORLIKE &  out_mean,
MATRIXLIKE &  out_cov 
)

Computes the mean vector and covariance from a list of values given as a vector of vectors, where each row is a sample.

Parameters
vThe set of data, as a vector of N vectors of M elements.
out_meanThe output M-vector for the estimated mean.
out_covThe output MxM matrix for the estimated covariance matrix.
See also
mrpt::math::meanAndCovMat, math::mean,math::stddev, math::cov

Definition at line 374 of file ops_containers.h.

References ASSERTMSG_, and mrpt::square().

Referenced by covVector().

◆ meanAndStd()

template<class VECTORLIKE >
void mrpt::math::meanAndStd ( const VECTORLIKE &  v,
double &  out_mean,
double &  out_std,
bool  unbiased = true 
)

Computes the standard deviation of a vector (or all elements of a matrix)

Parameters
vThe set of data, either as a vector, or a matrix (arrangement of data is ignored in this function).
out_meanThe output for the estimated mean
out_stdThe output for the estimated standard deviation
unbiasedIf set to true or false the std is normalized by "N-1" or "N", respectively.
See also
math::mean,math::stddev

Definition at line 329 of file ops_containers.h.

References mrpt::square(), and sum().

Referenced by mrpt::detectors::CFaceDetection::experimental_showMeasurements(), mrpt::vision::CFeature::internal_distanceBetweenPolarImages(), mrpt::vision::normalizeImage(), stddev(), and TEST().

◆ meanAndStdColumns()

template<class MAT_IN , class VEC >
void mrpt::math::meanAndStdColumns ( const MAT_IN &  m,
VEC &  outMeanVector,
VEC &  outStdVector,
const bool  unbiased_variance = true 
)

Computes a row with the mean values of each column in the matrix and the associated vector with the standard deviation of each column.

See also
mean,meanAndStdAll
Exceptions
std::exceptionIf the matrix/vector is empty.
Parameters
unbiased_varianceStandard deviation is sum(vals-mean)/K, with K=N-1 or N for unbiased_variance=true or false, respectively.

Definition at line 122 of file ops_matrices.h.

Referenced by TEST().

◆ minimum() [1/3]

template<class CONTAINER , int = CONTAINER::is_mrpt_type>
CONTAINER::Scalar mrpt::math::minimum ( const CONTAINER &  v)
inline

◆ minimum() [2/3]

template<class Derived >
Derived::Scalar mrpt::math::minimum ( const Eigen::MatrixBase< Derived > &  v)
inline

Definition at line 154 of file ops_containers.h.

◆ minimum() [3/3]

template<typename T >
T mrpt::math::minimum ( const std::vector< T > &  v)
inline

Definition at line 168 of file ops_containers.h.

References ASSERT_, and mrpt::keep_min().

◆ minimum_maximum() [1/2]

template<class Derived >
void mrpt::math::minimum_maximum ( const Eigen::MatrixBase< Derived > &  V,
typename Eigen::MatrixBase< Derived >::Scalar curMin,
typename Eigen::MatrixBase< Derived >::Scalar curMax 
)
inline

Return the maximum and minimum values of a Eigen-based vector or matrix.

Definition at line 268 of file ops_containers.h.

◆ minimum_maximum() [2/2]

template<typename T >
void mrpt::math::minimum_maximum ( const std::vector< T > &  V,
T &  curMin,
T &  curMax 
)
inline

Return the maximum and minimum values of a std::vector.

Definition at line 254 of file ops_containers.h.

References ASSERT_, mrpt::keep_max(), and mrpt::keep_min().

Referenced by adjustRange().

◆ multiply_A_skew3()

template<class MAT_A , class SKEW_3VECTOR , class MAT_OUT >
void mrpt::math::multiply_A_skew3 ( const MAT_A &  A,
const SKEW_3VECTOR &  v,
MAT_OUT &  out 
)

Only for vectors/arrays "v" of length3, compute out = A * Skew(v), where Skew(v) is the skew symmetric matric generated from v (see mrpt::math::skew_symmetric3)

Definition at line 165 of file ops_matrices.h.

References ASSERT_EQUAL_, MRPT_END, MRPT_START, and out.

Referenced by TEST().

◆ multiply_HCHt() [1/2]

template<typename MAT_H , typename MAT_C , typename MAT_R >
void mrpt::math::multiply_HCHt ( const MAT_H &  H,
const MAT_C &  C,
MAT_R &  R,
bool  accumResultInOutput = false 
)
inline

◆ multiply_HCHt() [2/2]

template<std::size_t H_ROWS, std::size_t H_COLS, typename Scalar >
mrpt::math::CMatrixFixed<Scalar, H_ROWS, H_ROWS> mrpt::math::multiply_HCHt ( const mrpt::math::CMatrixFixed< Scalar, H_ROWS, H_COLS > &  H,
const mrpt::math::CMatrixFixed< Scalar, H_COLS, H_COLS > &  C 
)

return a fixed-size matrix with the result of: H * C * H^t

Definition at line 43 of file ops_matrices.h.

References mat2eig(), and R.

◆ multiply_HCHt_scalar()

template<typename VECTOR_H , typename MAT_C >
MAT_C::Scalar mrpt::math::multiply_HCHt_scalar ( const VECTOR_H &  H,
const MAT_C &  C 
)

◆ multiply_HtCH_scalar()

template<typename VECTOR_H , typename MAT_C >
MAT_C::Scalar mrpt::math::multiply_HtCH_scalar ( const VECTOR_H &  H,
const MAT_C &  C 
)

◆ multiply_skew3_A()

template<class SKEW_3VECTOR , class MAT_A , class MAT_OUT >
void mrpt::math::multiply_skew3_A ( const SKEW_3VECTOR &  v,
const MAT_A &  A,
MAT_OUT &  out 
)

Only for vectors/arrays "v" of length3, compute out = Skew(v) * A, where Skew(v) is the skew symmetric matric generated from v (see mrpt::math::skew_symmetric3)

Definition at line 186 of file ops_matrices.h.

References ASSERT_EQUAL_, MRPT_END, MRPT_START, and out.

Referenced by TEST().

◆ ncc_vector()

template<class CONT1 , class CONT2 >
double mrpt::math::ncc_vector ( const CONT1 &  patch1,
const CONT2 &  patch2 
)

Normalised Cross Correlation between two vector patches The Matlab code for this is a = a - mean2(a); b = b - mean2(b); r = sum(sum(a.

*b))/sqrt(sum(sum(a.*a))*sum(sum(b.*b)));

Definition at line 433 of file ops_containers.h.

References ASSERT_, ASSERTMSG_, and mrpt::square().

◆ norm()

template<class CONTAINER >
CONTAINER::Scalar mrpt::math::norm ( const CONTAINER &  v)
inline

◆ norm_inf()

template<class CONTAINER >
CONTAINER::Scalar mrpt::math::norm_inf ( const CONTAINER &  v)
inline

◆ normalize()

template<class CONTAINER , typename Scalar >
void mrpt::math::normalize ( CONTAINER &  c,
Scalar  valMin,
Scalar  valMax 
)

◆ operator!=() [1/6]

template<typename T >
constexpr bool mrpt::math::operator!= ( const TPoint2D_< T > &  p1,
const TPoint2D_< T > &  p2 
)
constexpr

Exact comparison between 2D points.

Definition at line 230 of file TPoint2D.h.

References mrpt::math::TPoint2D_data< T >::x, and mrpt::math::TPoint2D_data< T >::y.

◆ operator!=() [2/6]

template<typename T >
constexpr bool mrpt::math::operator!= ( const TPoint3D_< T > &  p1,
const TPoint3D_< T > &  p2 
)
constexpr

Exact comparison between 3D points.

Definition at line 380 of file TPoint3D.h.

References mrpt::math::TPoint3D_data< T >::x, mrpt::math::TPoint3D_data< T >::y, and mrpt::math::TPoint3D_data< T >::z.

◆ operator!=() [3/6]

bool mrpt::math::operator!= ( const TPose2D p1,
const TPose2D p2 
)
inline

Exact comparison between 2D poses, taking possible cycles into account.

Definition at line 152 of file TPose2D.h.

References mrpt::math::TPose2D::phi, wrapTo2Pi(), mrpt::math::TPose2D::x, and mrpt::math::TPose2D::y.

◆ operator!=() [4/6]

bool mrpt::math::operator!= ( const TPose3D p1,
const TPose3D p2 
)
inline

Exact comparison between 3D poses, taking possible cycles into account.

Definition at line 225 of file TPose3D.h.

References mrpt::math::TPose3D::pitch, mrpt::math::TPose3D::roll, wrapTo2Pi(), mrpt::math::TPose3D::x, mrpt::math::TPose3D::y, mrpt::math::TPose3D::yaw, and mrpt::math::TPose3D::z.

◆ operator!=() [5/6]

bool mrpt::math::operator!= ( const TSegment2D s1,
const TSegment2D s2 
)
inline

Definition at line 108 of file TSegment2D.h.

References mrpt::math::TSegment2D::point1, and mrpt::math::TSegment2D::point2.

◆ operator!=() [6/6]

bool mrpt::math::operator!= ( const TSegment3D s1,
const TSegment3D s2 
)
inline

Definition at line 103 of file TSegment3D.h.

References mrpt::math::TSegment3D::point1, and mrpt::math::TSegment3D::point2.

◆ operator-() [1/3]

template<typename T >
constexpr TPoint3D_<T> mrpt::math::operator- ( const TPoint3D_< T > &  p1)
constexpr

Unary minus operator for 3D points.

Definition at line 367 of file TPoint3D.h.

References mrpt::math::TPoint3D_data< T >::x, mrpt::math::TPoint3D_data< T >::y, and mrpt::math::TPoint3D_data< T >::z.

◆ operator-() [2/3]

TPose3D mrpt::math::operator- ( const TPose3D b,
const TPose3D a 
)

Binary $\ominus$ operator: $b \ominus a$ computes the relative SE(3) pose of b "as seen from" a

Definition at line 257 of file TPose3D.cpp.

References mrpt::math::CMatrixFixed< T, ROWS, COLS >::asEigen(), mrpt::math::TPose3D::fromHomogeneousMatrix(), mrpt::math::TPose3D::getHomogeneousMatrix(), and mrpt::math::TPose3D::getInverseHomogeneousMatrix().

◆ operator-() [3/3]

TPose3D mrpt::math::operator- ( const TPose3D p)

Unary $\ominus$ operator: computes inverse SE(3) element.

Definition at line 249 of file TPose3D.cpp.

References mrpt::math::TPose3D::fromHomogeneousMatrix(), and mrpt::math::TPose3D::getInverseHomogeneousMatrix().

◆ operator<<() [1/16]

mrpt::serialization::CArchive & mrpt::math::operator<< ( mrpt::serialization::CArchive out,
const mrpt::math::TLine2D l 
)

Definition at line 114 of file TLine2D.cpp.

References mrpt::math::TLine2D::coefs, and out.

◆ operator<<() [2/16]

mrpt::serialization::CArchive & mrpt::math::operator<< ( mrpt::serialization::CArchive out,
const mrpt::math::TLine3D l 
)

Definition at line 102 of file TLine3D.cpp.

References mrpt::math::TLine3D::director, out, and mrpt::math::TLine3D::pBase.

◆ operator<<() [3/16]

mrpt::serialization::CArchive & mrpt::math::operator<< ( mrpt::serialization::CArchive out,
const mrpt::math::TObject2D o 
)

◆ operator<<() [4/16]

mrpt::serialization::CArchive & mrpt::math::operator<< ( mrpt::serialization::CArchive out,
const mrpt::math::TObject3D o 
)

◆ operator<<() [5/16]

mrpt::serialization::CArchive & mrpt::math::operator<< ( mrpt::serialization::CArchive out,
const mrpt::math::TPlane p 
)

Definition at line 163 of file TPlane.cpp.

References mrpt::math::TPlane::coefs, and out.

◆ operator<<() [6/16]

◆ operator<<() [7/16]

◆ operator<<() [8/16]

mrpt::serialization::CArchive & mrpt::math::operator<< ( mrpt::serialization::CArchive out,
const mrpt::math::TSegment2D s 
)

◆ operator<<() [9/16]

mrpt::serialization::CArchive & mrpt::math::operator<< ( mrpt::serialization::CArchive out,
const mrpt::math::TSegment3D s 
)

◆ operator<<() [10/16]

mrpt::serialization::CArchive & mrpt::math::operator<< ( mrpt::serialization::CArchive out,
const mrpt::math::TTwist2D o 
)

◆ operator<<() [11/16]

mrpt::serialization::CArchive & mrpt::math::operator<< ( mrpt::serialization::CArchive out,
const mrpt::math::TTwist3D o 
)

◆ operator<<() [12/16]

template<class PoseOrPoint , typename = std::enable_if_t<std::is_base_of_v< mrpt::math::TPoseOrPoint, PoseOrPoint>>>
mrpt::serialization::CArchive& mrpt::math::operator<< ( mrpt::serialization::CArchive out,
const PoseOrPoint &  o 
)

Binary streaming function.

Definition at line 99 of file TPoseOrPoint.h.

References out.

◆ operator<<() [13/16]

CArchive & mrpt::math::operator<< ( mrpt::serialization::CArchive s,
const CVectorDouble a 
)

◆ operator<<() [14/16]

CArchive & mrpt::math::operator<< ( mrpt::serialization::CArchive s,
const CVectorFloat a 
)

◆ operator<<() [15/16]

template<typename Scalar , class Derived , typename = std::enable_if_t< Derived::RowsAtCompileTime == Derived::ColsAtCompileTime || (Derived::ColsAtCompileTime == 1)>>
std::ostream& mrpt::math::operator<< ( std::ostream &  o,
const MatrixVectorBase< Scalar, Derived > &  m 
)

Stream as text.

Implemented for all matrices and vectors, except for non-square fixed-size matrices.

Definition at line 461 of file MatrixVectorBase.h.

References mrpt::math::MatrixVectorBase< Scalar, Derived >::asString().

◆ operator<<() [16/16]

template<class PoseOrPoint , typename = std::enable_if_t<std::is_base_of_v< mrpt::math::TPoseOrPoint, PoseOrPoint>>>
std::ostream& mrpt::math::operator<< ( std::ostream &  o,
const PoseOrPoint &  p 
)

Text streaming function.

Definition at line 78 of file TPoseOrPoint.h.

◆ operator==() [1/6]

template<typename T >
constexpr bool mrpt::math::operator== ( const TPoint2D_< T > &  p1,
const TPoint2D_< T > &  p2 
)
constexpr

Exact comparison between 2D points.

Definition at line 223 of file TPoint2D.h.

References mrpt::math::TPoint2D_data< T >::x, and mrpt::math::TPoint2D_data< T >::y.

◆ operator==() [2/6]

template<typename T >
constexpr bool mrpt::math::operator== ( const TPoint3D_< T > &  p1,
const TPoint3D_< T > &  p2 
)
constexpr

Exact comparison between 3D points.

Definition at line 374 of file TPoint3D.h.

References mrpt::math::TPoint3D_data< T >::x, mrpt::math::TPoint3D_data< T >::y, and mrpt::math::TPoint3D_data< T >::z.

◆ operator==() [3/6]

bool mrpt::math::operator== ( const TPose2D p1,
const TPose2D p2 
)
inline

Exact comparison between 2D poses, taking possible cycles into account.

Definition at line 145 of file TPose2D.h.

References mrpt::math::TPose2D::phi, wrapTo2Pi(), mrpt::math::TPose2D::x, and mrpt::math::TPose2D::y.

◆ operator==() [4/6]

bool mrpt::math::operator== ( const TPose3D p1,
const TPose3D p2 
)
inline

Exact comparison between 3D poses, taking possible cycles into account.

Definition at line 215 of file TPose3D.h.

References mrpt::math::TPose3D::pitch, mrpt::math::TPose3D::roll, wrapTo2Pi(), mrpt::math::TPose3D::x, mrpt::math::TPose3D::y, mrpt::math::TPose3D::yaw, and mrpt::math::TPose3D::z.

◆ operator==() [5/6]

bool mrpt::math::operator== ( const TSegment2D s1,
const TSegment2D s2 
)
inline

Definition at line 103 of file TSegment2D.h.

References mrpt::math::TSegment2D::point1, and mrpt::math::TSegment2D::point2.

◆ operator==() [6/6]

bool mrpt::math::operator== ( const TSegment3D s1,
const TSegment3D s2 
)
inline

Definition at line 98 of file TSegment3D.h.

References mrpt::math::TSegment3D::point1, and mrpt::math::TSegment3D::point2.

◆ operator>>() [1/15]

mrpt::serialization::CArchive & mrpt::math::operator>> ( mrpt::serialization::CArchive in,
CMatrixD::Ptr pObj 
)

◆ operator>>() [2/15]

CArchive & mrpt::math::operator>> ( mrpt::serialization::CArchive in,
CVectorDouble a 
)

◆ operator>>() [3/15]

CArchive & mrpt::math::operator>> ( mrpt::serialization::CArchive in,
CVectorFloat a 
)

◆ operator>>() [4/15]

Definition at line 109 of file TLine2D.cpp.

References mrpt::math::TLine2D::coefs.

◆ operator>>() [5/15]

Definition at line 97 of file TLine3D.cpp.

References mrpt::math::TLine3D::director, and mrpt::math::TLine3D::pBase.

◆ operator>>() [6/15]

◆ operator>>() [7/15]

◆ operator>>() [8/15]

Definition at line 158 of file TPlane.cpp.

References mrpt::math::TPlane::coefs.

◆ operator>>() [9/15]

◆ operator>>() [10/15]

◆ operator>>() [11/15]

◆ operator>>() [12/15]

◆ operator>>() [13/15]

◆ operator>>() [14/15]

◆ operator>>() [15/15]

template<class PoseOrPoint , typename = std::enable_if_t<std::is_base_of_v< mrpt::math::TPoseOrPoint, PoseOrPoint>>>
mrpt::serialization::CArchive& mrpt::math::operator>> ( mrpt::serialization::CArchive in,
PoseOrPoint &  o 
)

Binary streaming function.

Definition at line 88 of file TPoseOrPoint.h.

◆ ransac2Dline_degenerate()

template<typename T >
bool mrpt::math::ransac2Dline_degenerate ( [[maybe_unused] ] const CMatrixDynamic< T > &  allData,
[[maybe_unused] ] const std::vector< size_t > &  useIndices 
)

Return "true" if the selected points are a degenerate (invalid) case.

Definition at line 250 of file ransac_applications.cpp.

◆ ransac2Dline_distance()

template<typename T >
void mrpt::math::ransac2Dline_distance ( const CMatrixDynamic< T > &  allData,
const vector< CMatrixDynamic< T >> &  testModels,
const T  distanceThreshold,
unsigned int &  out_bestModelIndex,
std::vector< size_t > &  out_inlierIndices 
)

◆ ransac2Dline_fit()

template<typename T >
void mrpt::math::ransac2Dline_fit ( const CMatrixDynamic< T > &  allData,
const std::vector< size_t > &  useIndices,
vector< CMatrixDynamic< T >> &  fitModels 
)

◆ ransac3Dplane_degenerate()

template<typename T >
bool mrpt::math::ransac3Dplane_degenerate ( [[maybe_unused] ] const CMatrixDynamic< T > &  allData,
[[maybe_unused] ] const std::vector< size_t > &  useIndices 
)

Return "true" if the selected points are a degenerate (invalid) case.

Definition at line 91 of file ransac_applications.cpp.

◆ ransac3Dplane_distance()

template<typename T >
void mrpt::math::ransac3Dplane_distance ( const CMatrixDynamic< T > &  allData,
const vector< CMatrixDynamic< T >> &  testModels,
const T  distanceThreshold,
unsigned int &  out_bestModelIndex,
std::vector< size_t > &  out_inlierIndices 
)

◆ ransac3Dplane_fit()

template<typename T >
void mrpt::math::ransac3Dplane_fit ( const CMatrixDynamic< T > &  allData,
const std::vector< size_t > &  useIndices,
vector< CMatrixDynamic< T >> &  fitModels 
)

◆ ransacDatasetSize()

size_t mrpt::math::ransacDatasetSize ( const mrpt::maps::CPointsMap dataset)

Definition at line 40 of file vision_stereo_rectify/test.cpp.

◆ rdft()

static void mrpt::math::rdft ( int  n,
int  isgn,
FFT_TYPE a,
int *  ip,
FFT_TYPE w 
)
static

Definition at line 567 of file fourier.cpp.

References bitrv2(), cftbsub(), cftfsub(), makect(), makewt(), rftbsub(), and rftfsub().

Referenced by rdft2d().

◆ rdft2d()

static void mrpt::math::rdft2d ( int  n1,
int  n2,
int  isgn,
FFT_TYPE **  a,
FFT_TYPE t,
int *  ip,
FFT_TYPE w 
)
static
Copyright(C) 1997 Takuya OOURA (email: ooura@mmm.t.u-tokyo.ac.jp).
You may use, copy, modify this code for any purpose and
without fee. You may distribute this ORIGINAL package.

-----— Real DFT / Inverse of Real DFT -----— [definition] <case1> RDFT R[k1][k2] = sum_j1=0^n1-1 sum_j2=0^n2-1 a[j1][j2] * cos(2*pi*j1*k1/n1 + 2*pi*j2*k2/n2), 0<=k1<n1, 0<=k2<n2 I[k1][k2] = sum_j1=0^n1-1 sum_j2=0^n2-1 a[j1][j2] * sin(2*pi*j1*k1/n1 + 2*pi*j2*k2/n2), 0<=k1<n1, 0<=k2<n2 <case2> IRDFT (excluding scale) a[k1][k2] = (1/2) * sum_j1=0^n1-1 sum_j2=0^n2-1 (R[j1][j2] * cos(2*pi*j1*k1/n1 + 2*pi*j2*k2/n2) + I[j1][j2] * sin(2*pi*j1*k1/n1 + 2*pi*j2*k2/n2)), 0<=k1<n1, 0<=k2<n2 (notes: R[n1-k1][n2-k2] = R[k1][k2], I[n1-k1][n2-k2] = -I[k1][k2], R[n1-k1][0] = R[k1][0], I[n1-k1][0] = -I[k1][0], R[0][n2-k2] = R[0][k2], I[0][n2-k2] = -I[0][k2], 0<k1<n1, 0<k2<n2) [usage] <case1> ip[0] = 0; // first time only rdft2d(n1, n2, 1, a, t, ip, w); <case2> ip[0] = 0; // first time only rdft2d(n1, n2, -1, a, t, ip, w); [parameters] n1 :data length (int) n1 >= 2, n1 = power of 2 n2 :data length (int) n2 >= 2, n2 = power of 2 a[0...n1-1][0...n2-1] :input/output data (FFT_TYPE **) <case1> output data a[k1][2*k2] = R[k1][k2] = R[n1-k1][n2-k2], a[k1][2*k2+1] = I[k1][k2] = -I[n1-k1][n2-k2], 0<k1<n1, 0<k2<n2/2, a[0][2*k2] = R[0][k2] = R[0][n2-k2], a[0][2*k2+1] = I[0][k2] = -I[0][n2-k2], 0<k2<n2/2, a[k1][0] = R[k1][0] = R[n1-k1][0], a[k1][1] = I[k1][0] = -I[n1-k1][0], a[n1-k1][1] = R[k1][n2/2] = R[n1-k1][n2/2], a[n1-k1][0] = -I[k1][n2/2] = I[n1-k1][n2/2], 0<k1<n1/2, a[0][0] = R[0][0], a[0][1] = R[0][n2/2], a[n1/2][0] = R[n1/2][0], a[n1/2][1] = R[n1/2][n2/2] <case2> input data a[j1][2*j2] = R[j1][j2] = R[n1-j1][n2-j2], a[j1][2*j2+1] = I[j1][j2] = -I[n1-j1][n2-j2], 0<j1<n1, 0<j2<n2/2, a[0][2*j2] = R[0][j2] = R[0][n2-j2], a[0][2*j2+1] = I[0][j2] = -I[0][n2-j2], 0<j2<n2/2, a[j1][0] = R[j1][0] = R[n1-j1][0], a[j1][1] = I[j1][0] = -I[n1-j1][0], a[n1-j1][1] = R[j1][n2/2] = R[n1-j1][n2/2], a[n1-j1][0] = -I[j1][n2/2] = I[n1-j1][n2/2], 0<j1<n1/2, a[0][0] = R[0][0], a[0][1] = R[0][n2/2], a[n1/2][0] = R[n1/2][0], a[n1/2][1] = R[n1/2][n2/2] t[0...2*n1-1] :work area (FFT_TYPE *) ip[0...*] :work area for bit reversal (int *) length of ip >= 2+sqrt(n) ; if n % 4 == 0 2+sqrt(n/2); otherwise (n = max(n1, n2/2)) ip[0],ip[1] are pointers of the cos/sin table. w[0...*] :cos/sin table (FFT_TYPE *) length of w >= max(n1/2, n2/4) + n2/4 w[],ip[] are initialized if ip[0] == 0. [remark] Inverse of rdft2d(n1, n2, 1, a, t, ip, w); is rdft2d(n1, n2, -1, a, t, ip, w); for (j1 = 0; j1 <= n1 - 1; j1++) { for (j2 = 0; j2 <= n2 - 1; j2++) { a[j1][j2] *= 2.0 / (n1 * n2); } }

Definition at line 735 of file fourier.cpp.

References cdft(), makect(), makewt(), and rdft().

Referenced by dft2_real(), and idft2_real().

◆ realft()

static void mrpt::math::realft ( float  data[],
unsigned long  n 
)
static

Definition at line 101 of file fourier.cpp.

References mrpt::opengl::internal::data, and four1().

Referenced by fft_real().

◆ removeRepVertices()

template<class T >
void mrpt::math::removeRepVertices ( T &  poly)
inline

◆ removeUnusedVertices()

template<class T >
void mrpt::math::removeUnusedVertices ( T &  poly)
inline

◆ resizeLike() [1/2]

template<class EIGEN_CONTAINER >
void mrpt::math::resizeLike ( EIGEN_CONTAINER &  trg,
const EIGEN_CONTAINER &  src 
)

Definition at line 83 of file ops_containers.h.

Referenced by cumsum_tmpl().

◆ resizeLike() [2/2]

template<typename T >
void mrpt::math::resizeLike ( std::vector< T > &  trg,
const std::vector< T > &  src 
)

Definition at line 88 of file ops_containers.h.

◆ rftbsub()

static void mrpt::math::rftbsub ( int  n,
FFT_TYPE a,
int  nc,
FFT_TYPE c 
)
static

Definition at line 612 of file fourier.cpp.

Referenced by rdft().

◆ rftfsub()

static void mrpt::math::rftfsub ( int  n,
FFT_TYPE a,
int  nc,
FFT_TYPE c 
)
static

Definition at line 543 of file fourier.cpp.

Referenced by rdft().

◆ size()

template<class MATRIXLIKE >
size_t mrpt::math::size ( const MATRIXLIKE &  m,
const int  dim 
)
inline

Returns the size of the matrix in the i'th dimension: 1=rows, 2=columns (MATLAB-compatible function)

Note
Template argument MATRIXLIKE can be: mrpt::math::CMatrixDynamic, mrpt::math::CMatrixDynamic, mrpt::math::CMatrixFixed

Definition at line 21 of file math/include/mrpt/math/bits_math.h.

References THROW_EXCEPTION_FMT.

Referenced by mrpt::aligned_malloc(), mrpt::aligned_realloc(), mrpt::math::CVectorDynamic< double >::cast(), mrpt::detectors::CFaceDetection::checkIfFaceRegions(), mrpt::maps::CPointsMap::clipOutOfRange(), mrpt::maps::CPointsMap::clipOutOfRangeInZ(), mrpt::vision::TSequenceFeatureObservations::compressIDs(), mrpt::hmtslam::CHierarchicalMapMHPartition::computeCoordinatesTransformationBetweenNodes(), mrpt::hmtslam::CTopLCDetector_GridMatching::computeTopologicalObservationModel(), mrpt::math::TPolygon2D::contains(), GraphSlamLevMarqTest< my_graph_t >::create_ring_path(), mrpt::math::CVectorDynamic< double >::CVectorDynamic(), mrpt::hmtslam::TArcList::debugDump(), mrpt::vision::TSequenceFeatureObservations::decimateCameraFrames(), mrpt::maps::CPointsMap::determineMatching2D(), mrpt::img::CCanvas::drawMark(), mrpt::opengl::Program::dumpProgramDescription(), mrpt::obs::CSensoryFrame::eraseByIndex(), mrpt::detectors::CFaceDetection::experimental_calcHist(), mrpt::detectors::CFaceDetection::experimental_viewFacePointsAndEigenVects(), mrpt::vision::CFeatureExtraction::extractFeaturesSIFT(), mrpt::poses::CPoseInterpolatorBase< 3 >::filter(), mrpt::vision::findMultipleChessboardsCorners(), mrpt::math::CPolygon::getAllVertices(), mrpt::math::TPolygon3D::getAsSegmentList(), mrpt::math::TPolygon2D::getAsSegmentList(), mrpt::vision::CMatchedFeatureList::getBothFeatureLists(), mrpt::math::TPolygon2D::getBoundingBox(), mrpt::math::TPolygon2D::getCenter(), mrpt::math::TPolygon3D::getCenter(), mrpt::system::getcwd(), mrpt::hwdrivers::CCameraSensor::getNextFrame(), mrpt::obs::CSensoryFrame::getObservationByIndex(), mrpt::nav::CPTG_DiffDrive_CollisionGridBased::getPathDist(), mrpt::nav::CPTG_DiffDrive_CollisionGridBased::getPathPose(), mrpt::math::TPolygon2D::getPlotData(), mrpt::maps::CPointsMap::getPointsBuffer(), mrpt::math::CPolygon::GetVertex_x(), mrpt::math::CPolygon::GetVertex_y(), mrpt::nav::CPTG_DiffDrive_CollisionGridBased::inverseMap_WS2TP(), mrpt::math::TPolygon2D::isConvex(), mrpt::maps::CBeaconMap::isEmpty(), mrpt::vision::CFeatureListKDTree< FEAT >::kdtree_distance(), mrpt::math::CMatrixFixed< double, ObsDim, PointDof >::loadFromArray(), mrpt::nav::CReactiveNavigationSystem3D::loggingGetWSObstaclesAndShape(), mrpt::hmtslam::CHMTSLAM::LSLAM_process_message_from_AA(), mrpt::tfest::TMatchingPairList::overallSquareError(), mrpt::tfest::TMatchingPairList::overallSquareErrorAndPoints(), mrpt::hwdrivers::CGPSInterface::parse_NMEA(), mrpt::opengl::CPointCloud::PLY_export_get_vertex_count(), mrpt::opengl::CPointCloudColoured::PLY_export_get_vertex_count(), mrpt::vision::TSequenceFeatureObservations::removeFewObservedFeatures(), mrpt::bayes::CKalmanFilterCapable< 7, 3, 3, 7 >::runOneKalmanIteration(), mrpt::vision::TSequenceFeatureObservations::saveAsSBAFiles(), mrpt::math::CPolygon::serializeTo(), mrpt::hmtslam::CPropertiesValuesList::serializeTo(), mrpt::poses::CPointPDFParticles::serializeTo(), mrpt::hmtslam::CRobotPosesGraph::serializeTo(), mrpt::hmtslam::THypothesisIDSet::serializeTo(), mrpt::opengl::CPointCloudColoured::setPoint(), mrpt::tfest::TMatchingPairList::squareErrorVector(), mrpt::img::CCanvas::triangle(), mrpt::math::CPolygon::verticesCount(), and mrpt::hmtslam::TArcList::write().

◆ squareNorm()

template<size_t N, class T , class U >
T mrpt::math::squareNorm ( const U &  v)
inline

Compute the square norm of anything implementing [].

See also
norm

Definition at line 191 of file ops_containers.h.

References mrpt::square().

◆ squareNorm_accum()

template<class CONTAINER , typename VALUE >
VALUE mrpt::math::squareNorm_accum ( const VALUE  total,
const CONTAINER &  v 
)

Accumulate the squared-norm of a vector/array/matrix into "total" (this function is compatible with std::accumulate).

Definition at line 183 of file ops_containers.h.

◆ stddev()

template<class VECTORLIKE >
double mrpt::math::stddev ( const VECTORLIKE &  v,
bool  unbiased = true 
)
inline

Computes the standard deviation of a vector.

Parameters
vThe set of data
unbiasedIf set to true or false the std is normalized by "N-1" or "N", respectively.
See also
math::mean,math::meanAndStd

Definition at line 359 of file ops_containers.h.

References meanAndStd().

Referenced by mrpt::apps::CGridMapAlignerApp::run().

◆ sum() [1/2]

template<class CONTAINER >
CONTAINER::Scalar mrpt::math::sum ( const CONTAINER &  v)
inline

◆ sum() [2/2]

template<typename T >
T mrpt::math::sum ( const std::vector< T > &  v)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 228 of file ops_containers.h.

◆ sumRetType()

template<class CONTAINER , typename RET >
RET mrpt::math::sumRetType ( const CONTAINER &  v)
inline

Computes the sum of all the elements, with a custom return type.

See also
sum, cumsum

Definition at line 236 of file ops_containers.h.

Variable Documentation

◆ GEOMETRIC_TYPE_LINE

constexpr unsigned char mrpt::math::GEOMETRIC_TYPE_LINE = 2
staticconstexpr

◆ GEOMETRIC_TYPE_PLANE

constexpr unsigned char mrpt::math::GEOMETRIC_TYPE_PLANE = 4
staticconstexpr

◆ GEOMETRIC_TYPE_POINT

constexpr unsigned char mrpt::math::GEOMETRIC_TYPE_POINT = 0
staticconstexpr

◆ GEOMETRIC_TYPE_POLYGON

constexpr unsigned char mrpt::math::GEOMETRIC_TYPE_POLYGON = 3
staticconstexpr

◆ GEOMETRIC_TYPE_SEGMENT

constexpr unsigned char mrpt::math::GEOMETRIC_TYPE_SEGMENT = 1
staticconstexpr

◆ GEOMETRIC_TYPE_UNDEFINED

constexpr unsigned char mrpt::math::GEOMETRIC_TYPE_UNDEFINED = 255
staticconstexpr



Page generated by Doxygen 1.8.17 for MRPT 2.0.3 at Fri May 15 15:49:54 UTC 2020