|
EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
|
A FilterUpdate of a run-time number of branches that keeps the MeasurementUpdate it was last filled from, posteriors included, as the scratch of its next fill. More...
#include <EmrysFilter/Models/MeasurementUpdate.h>
Public Types | |
| using | Base = FilterUpdate<MeasurementSpace, std::dynamic_extent, Scalar, Allocator> |
| the update it is | |
| using | MeasuredType = MeasurementUpdate<Space, MeasurementSpace, std::dynamic_extent, Scalar, Allocator> |
| The measurement's branches it keeps. | |
| Public Types inherited from Emrys::FilterUpdate< MeasurementSpace, std::dynamic_extent, double, DefaultAllocator > | |
| using | Scalar |
| the scalar type | |
| using | MeasurementSpaceType |
| the measurement space | |
| using | BranchType |
| one branch | |
| using | allocator_type |
| where a run-time number of branches comes from | |
| using | Container |
| The branches' container: an array when their number is known at compile time, and otherwise a buffer from Allocator. | |
Public Member Functions | |
| ReusableFilterUpdate ()=default | |
| empty, from a default-constructed allocator | |
| ReusableFilterUpdate (Allocator const &allocator) | |
| Empty, with its branches and scratch from allocator. | |
| ReusableFilterUpdate (ReusableFilterUpdate const &)=default | |
| copies, keeping the source's allocator | |
| ReusableFilterUpdate (ReusableFilterUpdate &&) noexcept=default | |
| takes other's storage | |
| ReusableFilterUpdate (ReusableFilterUpdate const &other, Allocator const &allocator) | |
| Copies other into storage from allocator (see Allocation). | |
| ReusableFilterUpdate (ReusableFilterUpdate &&other, Allocator const &allocator) | |
| Moves other into storage from allocator, taking its storage when the allocators are equal. | |
| ReusableFilterUpdate & | operator= (ReusableFilterUpdate const &)=default |
| copies, keeping this allocator | |
| ReusableFilterUpdate & | operator= (ReusableFilterUpdate &&) noexcept=default |
| takes other's storage | |
| Public Member Functions inherited from Emrys::FilterUpdate< MeasurementSpace, std::dynamic_extent, double, DefaultAllocator > | |
| FilterUpdate ()=default | |
| no branches, not accepted | |
| Scalar | logLikelihood () const |
| Eigen::Index | innovationSize () const |
| DefaultAllocator | get_allocator () const |
Public Attributes | |
| MeasuredType | measured |
| the branches of the last fill, posteriors included, reused by the next | |
| Public Attributes inherited from Emrys::FilterUpdate< MeasurementSpace, std::dynamic_extent, double, DefaultAllocator > | |
| Container | branches |
| one per noise component, weights summing to one | |
| bool | accepted |
| whether the policy accepted the measurement | |
Additional Inherited Members | |
| Static Public Attributes inherited from Emrys::FilterUpdate< MeasurementSpace, std::dynamic_extent, double, DefaultAllocator > | |
| static constexpr std::size_t | BranchCount |
| the number of branches, or std::dynamic_extent | |
A FilterUpdate of a run-time number of branches that keeps the MeasurementUpdate it was last filled from, posteriors included, as the scratch of its next fill.
A filter's update under mixture noise conditions the prior once per noise component, reduces the posteriors with its policy, and returns the branches without them (decisions.md [innovation-statistics]). The branches with their posteriors are sized by the number of components, so a filter that refills one of these, such as KalmanRecursion::update() into a result, allocates nothing once the result has held as many (see Allocation). The scratch is measured, whose posteriors are what the policy left: the one it kept is moved from.