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

SwitchingModel (decisions.md [switching-models], [imm]): a Markov chain on a discrete mode space and the process model each mode follows, one per mode, one per value of a mode axis through switchingModel(), or one shared, and over a fixed step when every model is a FixedStepModel [fixed-step-models]. More...

#include <algorithm>
#include <array>
#include <cstddef>
#include <tuple>
#include <type_traits>
#include <utility>
#include <EmrysFilter/Core/Macros.h>
#include <EmrysFilter/Core/Math.h>
#include <EmrysFilter/Distributions/Categorical.h>
#include <EmrysFilter/Models/MeasurementModel.h>
#include <EmrysFilter/Models/ProcessModel.h>
#include <EmrysFilter/Spaces/Discrete.h>
#include <EmrysFilter/Spaces/Space.h>
#include <EmrysFilter/Spaces/Subspace.h>

Go to the source code of this file.

Classes

class  Emrys::ModelWithMethod< Model_, Method_ >
 A process model and the prediction method that one mode of a SwitchingModel predicts it by, in place of the filter's [switching-models]. More...
class  Emrys::SwitchingModel< ModeSpace_, Scalar_, Path_, Models >
 A process model that switches between modes: a Markov chain on a discrete mode space, and the process model each mode follows [switching-models]. More...
class  Emrys::SwitchingMeasurement< Path_, Measurements >
 A measurement that switches between modes: one Measurement per value of a mode axis, so that a filter over a Hybrid updates each mode by the measurement that its value in that axis names [imm]. More...

Functions

template<typename Model, TransformMethod Method>
ModelWithMethod< Model, Method > Emrys::withMethod (Model model, Method method)
template<typename P, typename ModeSpace, typename Scalar, typename... Models>
SwitchingModel< ModeSpace, Scalar, P, Models... > Emrys::switchingModel (MarkovChain< ModeSpace, Scalar > chain, Models... models)
template<typename P, Measurement... Measurements>
SwitchingMeasurement< P, Measurements... > Emrys::switchingMeasurement (Measurements... measurements)

Variables

template<typename ModeSpace_, typename Scalar_, typename Path_, typename... Models>
constexpr bool Emrys::isFixedStep< SwitchingModel< ModeSpace_, Scalar_, Path_, Models... > > {(isFixedStep<Models> && ...)}
 A SwitchingModel whose process models are all FixedStepModel is fixed-step too.

Detailed Description

SwitchingModel (decisions.md [switching-models], [imm]): a Markov chain on a discrete mode space and the process model each mode follows, one per mode, one per value of a mode axis through switchingModel(), or one shared, and over a fixed step when every model is a FixedStepModel [fixed-step-models].

The interacting multiple model filter's process model. withMethod() gives one mode's model a prediction method of its own, ModelWithMethod. SwitchingMeasurement is the model's counterpart for an update: one measurement per value of a mode axis, through switchingMeasurement(). Read Reduction.h next; the design review is docs/guide/imm-filter.md.