EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Emrys::ReusableFilterUpdate< Space, MeasurementSpace, Scalar, Allocator > Struct Template Reference

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>

Inheritance diagram for Emrys::ReusableFilterUpdate< Space, MeasurementSpace, Scalar, Allocator >:
Emrys::FilterUpdate< MeasurementSpace, std::dynamic_extent, double, DefaultAllocator >

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

Detailed Description

template<typename Space, typename MeasurementSpace, typename Scalar = double, typename Allocator = DefaultAllocator>
struct Emrys::ReusableFilterUpdate< Space, MeasurementSpace, Scalar, Allocator >

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.

Template Parameters
Spacethe state's space
MeasurementSpacethe measurement space
Scalarthe scalar type
Allocatorwhere the branches come from

The documentation for this struct was generated from the following file: