EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Condition.h File Reference

The Kalman conditioning of a marked input on an observation of a transform's output (decisions.md [covariance-update-forms], [innovation-cholesky], [linearization-forms]): condition() with the updates::Standard, updates::Symmetric, and updates::Joseph covariance forms and the CovarianceUpdate concept, its result Conditioned, and statisticalLinearization() of a result in its marked input. More...

#include <array>
#include <cstddef>
#include <expected>
#include <optional>
#include <tuple>
#include <type_traits>
#include <utility>
#include <Eigen/Cholesky>
#include <EmrysFilter/Core/Macros.h>
#include <EmrysFilter/Core/Multiply.h>
#include <EmrysFilter/Core/Solve.h>
#include <EmrysFilter/Distributions/Gaussian.h>
#include <EmrysFilter/Models/Linearization.h>
#include <EmrysFilter/Spaces/Reset.h>
#include <EmrysFilter/Spaces/Space.h>
#include <EmrysFilter/Spaces/TagPath.h>

Go to the source code of this file.

Classes

struct  Emrys::Conditioned< Space, OutputSpace, Scalar >
 The result of condition(): the posterior, and the innovation, from which the log-likelihood of the observation follows when asked for. More...
struct  Emrys::updates::Standard
 The standard covariance update of condition(): \( P - K \Sigma_{xy}^T \), which is \( (I - K H) P \) written without \( H \). More...
struct  Emrys::updates::Symmetric
 The symmetric covariance update: \( P - K \Sigma_{yy} K^T \), equal to the standard form when \( K \) is the optimal gain, and made exactly symmetric. More...
struct  Emrys::updates::Joseph
 The Joseph covariance update: \( (I - K H) P (I - K H)^T + K R K^T \), with \( H \) and \( R \) from the statistical linearization of the output in the input (see statisticalLinearization()). More...
struct  Emrys::StatisticalLinearization< InputSpace, OutputSpace, Scalar >
 The statistical linearization of an output in an input, from statisticalLinearization(): the affine function of the input that best predicts the output in mean square, \( y \approx \bar y \boxplus H (x \boxminus \mu) \), and the covariance \( \Omega \) of what it leaves unexplained. More...

Namespaces

namespace  Emrys::updates
 The covariance update forms, each made by its factory (decisions.md [policy-factories], [covariance-update-forms]): standard(), symmetric(), and joseph().

Concepts

concept  Emrys::CovarianceUpdate
 One of the covariance updates: updates::Standard, updates::Symmetric, or updates::Joseph.

Functions

constexpr Standard Emrys::updates::standard ()
constexpr Symmetric Emrys::updates::symmetric ()
constexpr Joseph Emrys::updates::joseph ()
template<typename InputSpace, typename OutputSpace, typename Form, typename Scalar>
StatisticalLinearization< InputSpace, OutputSpace, Scalar > Emrys::statisticalLinearization (OutputWithCross< InputSpace, OutputSpace, Form, Scalar > const &predicted)
template<UncertainInput Prior, typename OutputSpace, typename LinearizationForm, typename Derived, CovarianceUpdate Form = updates::Standard>
auto Emrys::condition (Prior const &prior, OutputWithCross< typename Prior::SpaceType, OutputSpace, LinearizationForm, typename Prior::Scalar > const &predicted, Eigen::MatrixBase< Derived > const &observed, Form const &form={})

Detailed Description

The Kalman conditioning of a marked input on an observation of a transform's output (decisions.md [covariance-update-forms], [innovation-cholesky], [linearization-forms]): condition() with the updates::Standard, updates::Symmetric, and updates::Joseph covariance forms and the CovarianceUpdate concept, its result Conditioned, and statisticalLinearization() of a result in its marked input.

It reads only what Linearization.h defines, so an update needs none of the transform's machinery. Read Methods.h next.