|
EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
|
Gauss-Hermite method: the product rule of Order points per coordinate over the joint input space of dimension \( L \), \( \mathrm{Order}^L \) points in the coordinates of a root of the joint covariance. More...
#include <EmrysFilter/Models/Methods.h>
Static Public Member Functions | |
| static constexpr Eigen::Index | pointCount (Eigen::Index n) |
| template<typename Points, typename Weights> | |
| static Eigen::Index | unitPoints (Eigen::Index n, Points &points, Weights &weights) |
| Fills points, \( n \times \mathrm{Order}^n \), with every combination of the one-dimensional points of internal::hermiteRule(), the first coordinate varying fastest, and weights with the product of each point's coordinates' weights, over \( n > 0 \) coordinates; asserts that the points are within MaxPointCount. | |
Static Public Attributes | |
| static constexpr int | PointsPerCoordinate = Order |
| Order | |
Gauss-Hermite method: the product rule of Order points per coordinate over the joint input space of dimension \( L \), \( \mathrm{Order}^L \) points in the coordinates of a root of the joint covariance.
Each coordinate takes the roots of the probabilists' Hermite polynomial of degree Order, and a point's weight is the product of its coordinates' weights. Exact for polynomials of degree up to \( 2 \, \mathrm{Order} - 1 \) in each coordinate of a Gaussian input. The count grows exponentially in \( L \), so the method is for small inputs, such as the coordinates a model's affineIn() leaves nonlinear, and a joint input of more than MaxPointCount points is refused: at compile time where its size is fixed, by an assertion otherwise.
The Gauss-Hermite Kalman filter of Ito and Xiong (2000) as Särkkä (2013), algorithms 6.5 and 6.6, give it: the one-dimensional points as the roots of \( H_p \), computed as that book advises as the eigenvalues of the symmetric tridiagonal matrix of the recursion (6.14), with \( \sqrt{k} \) beside the diagonal, and the weights by equation (6.17), \( W_i = p! / (p^2 H_{p-1}(\xi_i)^2) \). The output mean is a tangent-space mean about the output of the point of greatest weight, the center when Order is odd (decisions.md [sigma-point-sets]).
| Order | the points per coordinate, at least 1; 3 is exact for a quadratic function's mean and covariance |
|
inlinestaticnodiscardconstexpr |
|
inlinestatic |
Fills points, \( n \times \mathrm{Order}^n \), with every combination of the one-dimensional points of internal::hermiteRule(), the first coordinate varying fastest, and weights with the product of each point's coordinates' weights, over \( n > 0 \) coordinates; asserts that the points are within MaxPointCount.