|
EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
|
ImmRecursion and ImmFilter (decisions.md [switching-models], [imm], [filters-and-recursions]): a Hybrid state mixed through a Markov chain, predicted through each mode's model, and updated per mode, with Markov outlier states when a measurement's noise is by mode axis (ModeNoise) and a measurement per mode through a SwitchingMeasurement; the recursion that does this to a hybrid passed in, keeping the scratch it mixes and updates into, the filter that owns a hybrid and runs the recursion on it. More...
#include <cstddef>#include <expected>#include <optional>#include <span>#include <type_traits>#include <utility>#include <EmrysFilter/Core/Allocation.h>#include <EmrysFilter/Core/Macros.h>#include <EmrysFilter/Core/Math.h>#include <EmrysFilter/Core/Print.h>#include <EmrysFilter/Core/Weights.h>#include <EmrysFilter/Distributions/Categorical.h>#include <EmrysFilter/Distributions/Component.h>#include <EmrysFilter/Distributions/Gaussian.h>#include <EmrysFilter/Distributions/Hybrid.h>#include <EmrysFilter/Filters/FilterUpkeep.h>#include <EmrysFilter/Filters/KalmanFilter.h>#include <EmrysFilter/Models/Measurement.h>#include <EmrysFilter/Models/ProcessModel.h>#include <EmrysFilter/Models/Reduction.h>#include <EmrysFilter/Models/SwitchingModel.h>#include <EmrysFilter/Models/Transform.h>#include <EmrysFilter/Spaces/Discrete.h>#include <EmrysFilter/Spaces/Space.h>Go to the source code of this file.
Classes | |
| struct | Emrys::ImmFilterUpdate< ModeUpdate, Scalar_, Allocator > |
| What an IMM filter's update did: each mode's update before reduction, the observation's log-likelihood over every mode, and whether any mode accepted the measurement. More... | |
| struct | Emrys::HybridPredictedJoint< Space_, ModeSpace_, Scalar_, Allocator_ > |
| One IMM prediction as its smoother needs it: the mode probabilities the step started from, each mode's Gaussian predicted through its own model as a PredictedJoint, and the chain's transition matrix. More... | |
| class | Emrys::ImmRecursion< Component_, Model_, Method_, Allocator_ > |
| The interacting multiple model (IMM) filter's steps over a hybrid state, without the state: a switching process model, the method that predicts the modes whose models carry none of their own, and the scratch the modes are mixed and updated into, acting on a Hybrid passed in (decisions.md [filters-and-recursions]). More... | |
| struct | Emrys::ImmRecursion< Component_, Model_, Method_, Allocator_ >::UpdateTypeOf< M > |
| UpdateType<M>, named without being formed (see internal::UnlessGivenBlock). More... | |
| class | Emrys::ImmFilter< Component_, Model_, Method_, Allocator_, Upkeep_ > |
| An interacting multiple model (IMM) filter: a hybrid state with one component per mode, and the ImmRecursion that mixes it through a switching process model and updates it per mode. More... | |
ImmRecursion and ImmFilter (decisions.md [switching-models], [imm], [filters-and-recursions]): a Hybrid state mixed through a Markov chain, predicted through each mode's model, and updated per mode, with Markov outlier states when a measurement's noise is by mode axis (ModeNoise) and a measurement per mode through a SwitchingMeasurement; the recursion that does this to a hybrid passed in, keeping the scratch it mixes and updates into, the filter that owns a hybrid and runs the recursion on it.
predictJoint() records a step as a HybridPredictedJoint for the IMM smoother in HybridGaussianHistory.h [smoothing], and a MixtureFilter of hybrids runs the recursion on each of its components. Read AmmFilter.h next; the design review is docs/guide/imm-filter.md.