EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Emrys::methods::SphericalSimplex< CenterWeight > Struct Template Reference

Spherical simplex method: \( L + 2 \) points over the joint input space of dimension \( L \), the mean with weight centerWeight \( W_0 \) and \( L + 1 \) points of weight \( (1 - W_0) / (L + 1) \) on a sphere of radius \( \sqrt{L / (1 - W_0)} \) about it, 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 (n + 2) \), with the center, then the \( n + 1 \) points of the recursion of Julier and Uhlmann (2004), whose coordinate \( j \) is \( -1 / \sqrt{j (j + 1) W_1} \) at points 1 to \( j \), \( j / \sqrt{j (j + 1) W_1} \) at point \( j + 1 \), and zero after, and weights with \( W_0 \) and \( W_1 = (1 - W_0) / (n + 1) \), over \( n > 0 \) coordinates.

Static Public Attributes

static constexpr double centerWeight = CenterWeight
 CenterWeight

Detailed Description

template<double CenterWeight = 0.0>
struct Emrys::methods::SphericalSimplex< CenterWeight >

Spherical simplex method: \( L + 2 \) points over the joint input space of dimension \( L \), the mean with weight centerWeight \( W_0 \) and \( L + 1 \) points of weight \( (1 - W_0) / (L + 1) \) on a sphere of radius \( \sqrt{L / (1 - W_0)} \) about it, in the coordinates of a root of the joint covariance.

The fewest points that match a mean and a covariance, plus the center, for a function too costly to evaluate \( 2L + 1 \) times. The points are not symmetric about the mean, so odd moments of the input are not matched as the symmetric sets match them.

The spherical simplex set of Julier (2003), by the construction of Julier andUhlmann (2004), which places all but the center at one distance from it, \( \sqrt{L / (1 - W_0)} \). No free description of the construction has been read, and the original has not been. The output mean is a tangent-space mean about the center's output (decisions.md [sigma-point-sets]). Its parameter is a compile-time constant, as Unscented's are.

Template Parameters
CenterWeight\( W_0 \), the center point's weight, in \( [0, 1) \)

Member Function Documentation

◆ pointCount()

template<double CenterWeight = 0.0>
constexpr Eigen::Index Emrys::methods::SphericalSimplex< CenterWeight >::pointCount ( Eigen::Index n)
inlinestaticnodiscardconstexpr
Returns
the points over n coordinates, \( n + 2 \)

◆ unitPoints()

template<double CenterWeight = 0.0>
template<typename Points, typename Weights>
Eigen::Index Emrys::methods::SphericalSimplex< CenterWeight >::unitPoints ( Eigen::Index n,
Points & points,
Weights & weights )
inlinestatic

Fills points, \( n \times (n + 2) \), with the center, then the \( n + 1 \) points of the recursion of Julier and Uhlmann (2004), whose coordinate \( j \) is \( -1 / \sqrt{j (j + 1) W_1} \) at points 1 to \( j \), \( j / \sqrt{j (j + 1) W_1} \) at point \( j + 1 \), and zero after, and weights with \( W_0 \) and \( W_1 = (1 - W_0) / (n + 1) \), over \( n > 0 \) coordinates.

Returns
the point the output mean is taken about, the center

The documentation for this struct was generated from the following file: