|
EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
|
The distribution that a container of several holds one of per element (decisions.md [component-first], [params-and-density]): a Mixture's component, a Hybrid's conditional given a mode. More...
#include <EmrysFilter/Distributions/Component.h>
The distribution that a container of several holds one of per element (decisions.md [component-first], [params-and-density]): a Mixture's component, a Hybrid's conditional given a mode.
Gaussian is one, and so is Hybrid, so a mixture of hybrid states is a Mixture too. A component is named by the type that evaluates (Gaussian and Hybrid, not GaussianParams and HybridParams), and the container stores its Params.
Its parameters have the space and dimension contract of a Gaussian [sizes-and-dimensions], factorize with factorize(), and have a ComponentTraits specialization for the log-density read from that factorization without a check, for the moments, and for the collapse of several components into one by moment matching.
The contract is closed (decisions.md [user-extension-points]): a component is one of the library's, since the traits encode the collapse, which a wrong specialization would corrupt silently, and a type derived from a component isn't one, its Params and Density round trip landing on the base. What a user keeps per component lives beside the mixture instead (MixtureLineage::carry()), and what a user does to a component is a recursion of the user's own (Filters/Recursion.h).