MRPT  2.0.4
Functions
Gaussian PDF transformation functions

Detailed Description

Collaboration diagram for Gaussian PDF transformation functions:

Functions

template<class VECTORLIKE1 , class MATLIKE1 , class USERPARAM , class VECTORLIKE2 , class VECTORLIKE3 , class MATLIKE2 >
void mrpt::math::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 mrpt::math::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 mrpt::math::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...
 

Function Documentation

◆ transform_gaussian_linear()

template<class VECTORLIKE1 , class MATLIKE1 , class USERPARAM , class VECTORLIKE2 , class VECTORLIKE3 , class MATLIKE2 >
void mrpt::math::transform_gaussian_linear ( const VECTORLIKE1 &  x_mean,
const MATLIKE1 &  x_cov,
void(*)(const VECTORLIKE1 &x, const USERPARAM &fixed_param, VECTORLIKE3 &y)  functor,
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.

The user must supply the function in "functor" which takes points in the X space and returns the mapped point in Y, optionally using an extra, constant parameter ("fixed_param") which remains constant. The Jacobians are estimated numerically using the vector of small increments "x_increments".

See also
The example in MRPT/samples/unscented_transform_test
transform_gaussian_unscented, transform_gaussian_montecarlo
Note
This function requires #include <Eigen/Dense>

Definition at line 152 of file transform_gaussian.h.

References mrpt::math::estimateJacobian(), MRPT_END, MRPT_START, and mrpt::math::multiply_HCHt().

Referenced by Pose3DQuatPDFGaussTests::testInverse(), Pose3DPDFGaussTests::testPoseComposition(), Pose3DQuatPDFGaussTests::testPoseComposition(), PosePDFGaussTests::testPoseInverse(), Pose3DPDFGaussTests::testPoseInverseComposition(), and Pose3DQuatPDFGaussTests::testPoseInverseComposition().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ transform_gaussian_montecarlo()

template<class VECTORLIKE1 , class MATLIKE1 , class USERPARAM , class VECTORLIKE2 , class VECTORLIKE3 , class MATLIKE2 >
void mrpt::math::transform_gaussian_montecarlo ( const VECTORLIKE1 &  x_mean,
const MATLIKE1 &  x_cov,
void(*)(const VECTORLIKE1 &x, const USERPARAM &fixed_param, VECTORLIKE3 &y)  functor,
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.

The user must supply the function in "functor" which takes points in the X space and returns the mapped point in Y, optionally using an extra, constant parameter ("fixed_param") which remains constant.

Parameters
out_samples_yIf !=nullptr, this vector will contain, upon return, the sequence of random samples generated and propagated through the functor().
See also
The example in MRPT/samples/unscented_transform_test
transform_gaussian_unscented, transform_gaussian_linear

Definition at line 114 of file transform_gaussian.h.

References mrpt::math::covariancesAndMean(), mrpt::random::CRandomGenerator::drawGaussianMultivariateMany(), mrpt::random::getRandomGenerator(), MRPT_END, and MRPT_START.

Referenced by mrpt::maps::COccupancyGridMap2D::laserScanSimulatorWithUncertainty().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ transform_gaussian_unscented()

template<class VECTORLIKE1 , class MATLIKE1 , class USERPARAM , class VECTORLIKE2 , class VECTORLIKE3 , class MATLIKE2 >
void mrpt::math::transform_gaussian_unscented ( const VECTORLIKE1 &  x_mean,
const MATLIKE1 &  x_cov,
void(*)(const VECTORLIKE1 &x, const USERPARAM &fixed_param, VECTORLIKE3 &y)  functor,
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.

The user must supply the function in "functor" which takes points in the X space and returns the mapped point in Y, optionally using an extra, constant parameter ("fixed_param") which remains constant.

The parameters alpha, K and beta are the common names of the SUT method, and the default values are those recommended in most papers.

Parameters
elem_do_wrap2piIf !=nullptr; it must point to an array of "bool" of size()==dimension of each element, stating if it's needed to do a wrap to [-pi,pi] to each dimension.
See also
The example in MRPT/samples/unscented_transform_test
transform_gaussian_montecarlo, transform_gaussian_linear

Definition at line 46 of file transform_gaussian.h.

References mrpt::math::covariancesAndMeanWeighted(), MRPT_END, and MRPT_START.

Referenced by mrpt::poses::CPose3DQuatPDFGaussian::copyFrom(), mrpt::poses::CPose3DPDFGaussian::copyFrom(), and mrpt::maps::COccupancyGridMap2D::laserScanSimulatorWithUncertainty().

Here is the call graph for this function:
Here is the caller graph for this function:



Page generated by Doxygen 1.8.14 for MRPT 2.0.4 Git: 33de1d0ad Sat Jun 20 11:02:42 2020 +0200 at sáb jun 20 17:35:17 CEST 2020