EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Emrys::AdditiveNoise< Parts > Class Template Reference

Noise added to a model's output, \( z = h(x) \boxplus v \), as additiveNoise() declares it (decisions.md [additive-noise], [model-policies]): the function is transformed once, and the noise only widens and shifts the result. More...

#include <EmrysFilter/Models/Policies.h>

Public Types

using Distribution = std::remove_cvref_t<std::tuple_element_t<0, std::tuple<Parts...>>>
 The one unplaced distribution's type, unqualified, or the covariance's.

Public Member Functions

 AdditiveNoise (Parts... parts)
 The noise of parts.
std::tuple< Parts... > const & parts () const
Distribution const & distribution () const &
std::tuple_element_t< 0, std::tuple< Parts... > > distribution () &&
template<typename Axis>
auto byMode () const &
template<typename Axis>
auto byMode () &&
 byMode() const &, moving the mixture out of a temporary noise.

Static Public Attributes

static constexpr bool Placed = (internal::isPlacedNoise<Parts> || ...)
 whether the parts are placed by tag path, and so become one Gaussian in the output space
static constexpr bool ZeroMean = !Placed && internal::isNoiseCovariance<Distribution>
 whether the one unplaced part is a covariance alone, zero-mean noise with no space of its own
static constexpr bool HasOwnSpace = !Placed && !ZeroMean
 whether the one unplaced part is a distribution, whose space a model's output may take

Detailed Description

template<typename... Parts>
class Emrys::AdditiveNoise< Parts >

Noise added to a model's output, \( z = h(x) \boxplus v \), as additiveNoise() declares it (decisions.md [additive-noise], [model-policies]): the function is transformed once, and the noise only widens and shifts the result.

One unplaced part covers the whole output space: a covariance matrix \( R \) over the output's differences, zero-mean Gaussian noise, as additive noise nearly always is; a GaussianParams or a GaussianMixtureParams over them, such as a biased sensor's or a narrow inlier and a wide outlier component; or a const reference to one that outlives the model. Parts placed by tag path, on<Range>(r) and onEach<Offsets>(r), each a covariance or a GaussianParams, are independent Gaussians on blocks of the output, placed in its space instance when the model meets a state, as the factors of a Product are (decisions.md [product-factors]); a placed mixture is refused. A covariance has no space of its own, so a model whose output space would come from its noise measures in a Linear sized by its function's result instead.

Template Parameters
Partsthe parts, as given
See also
additiveNoise(), ContinuousNoise

Member Function Documentation

◆ byMode()

template<typename... Parts>
template<typename Axis>
auto Emrys::AdditiveNoise< Parts >::byMode ( ) const &
inlinenodiscard
Returns
this noise, a mixture, with its components as the values of the mode axis named by the path Axis (a tag or a TagPath), in order (see ModeNoise)

◆ distribution() [1/2]

template<typename... Parts>
std::tuple_element_t< 0, std::tuple< Parts... > > Emrys::AdditiveNoise< Parts >::distribution ( ) &&
inlinenodiscard
Returns
the one unplaced distribution of a temporary noise: moved out where it is held by copy, the reference where it is held by one, so that a reference bound to model.noise().distribution() lives as long as the result and never dangles

◆ distribution() [2/2]

template<typename... Parts>
Distribution const & Emrys::AdditiveNoise< Parts >::distribution ( ) const &
inlinenodiscard
Returns
the one unplaced distribution, or covariance, over the whole output space

◆ parts()

template<typename... Parts>
std::tuple< Parts... > const & Emrys::AdditiveNoise< Parts >::parts ( ) const
inlinenodiscard
Returns
the parts, as given

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