Gaussian PDF transformation functions
// global 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(*)(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 ); 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 ); 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 );
Global 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(*)(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_wrap2pi |
If !=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
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_y |
If !=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
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”. This function requires #include <Eigen/Dense>
See also:
The example in MRPT/samples/unscented_transform_test