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

The result of update(): weighted branches, one per noise component, and the observation's log-likelihood. More...

#include <EmrysFilter/Models/MeasurementUpdate.h>

Public Types

using Scalar = Scalar_
 the scalar type
using SpaceType = Space
 the state's space
using MeasurementSpaceType = MeasurementSpace
 the measurement space
using BranchType = UpdateBranch<Space, MeasurementSpace, Scalar>
 one branch
using allocator_type = Allocator
 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

 MeasurementUpdate ()=default
 no branches
 MeasurementUpdate (Container branches, Scalar mixtureLogLikelihood=0)
 The branches branches of an observation whose log-likelihood, where they are more than the one a single noise component gives, is mixtureLogLikelihood.
Scalar logLikelihood () const
Eigen::Index innovationSize () const
Allocator get_allocator () const

Public Attributes

Container branches
 one per noise component, weights summing to one

Static Public Attributes

static constexpr std::size_t BranchCount = Count
 the number of branches, or std::dynamic_extent

Detailed Description

template<typename Space, typename MeasurementSpace, std::size_t Count = std::dynamic_extent, typename Scalar_ = double, typename Allocator = DefaultAllocator>
struct Emrys::MeasurementUpdate< Space, MeasurementSpace, Count, Scalar_, Allocator >

The result of update(): weighted branches, one per noise component, and the observation's log-likelihood.

A single Gaussian noise gives one branch.

Template Parameters
Spacethe state's space
MeasurementSpacethe measurement space
Countnumber of branches if known at compile time, otherwise std::dynamic_extent
Scalar_the scalar type
Allocatorwhere a run-time number of branches comes from (see Allocation)

Member Typedef Documentation

◆ Container

template<typename Space, typename MeasurementSpace, std::size_t Count = std::dynamic_extent, typename Scalar_ = double, typename Allocator = DefaultAllocator>
using Emrys::MeasurementUpdate< Space, MeasurementSpace, Count, Scalar_, Allocator >::Container
Initial value:
std::conditional_t<
Count == std::dynamic_extent,
internal::Buffer<BranchType, Allocator>,
std::array<BranchType, Count>>

The branches' container: an array when their number is known at compile time, and otherwise a buffer from Allocator.

Member Function Documentation

◆ get_allocator()

template<typename Space, typename MeasurementSpace, std::size_t Count = std::dynamic_extent, typename Scalar_ = double, typename Allocator = DefaultAllocator>
Allocator Emrys::MeasurementUpdate< Space, MeasurementSpace, Count, Scalar_, Allocator >::get_allocator ( ) const
inlinenodiscard
Returns
the allocator a run-time number of branches comes from, or a default-constructed one for an array of them

◆ innovationSize()

template<typename Space, typename MeasurementSpace, std::size_t Count = std::dynamic_extent, typename Scalar_ = double, typename Allocator = DefaultAllocator>
Eigen::Index Emrys::MeasurementUpdate< Space, MeasurementSpace, Count, Scalar_, Allocator >::innovationSize ( ) const
inlinenodiscard
Returns
the difference dimension of the innovation, the degrees of freedom of each NIS

◆ logLikelihood()

template<typename Space, typename MeasurementSpace, std::size_t Count = std::dynamic_extent, typename Scalar_ = double, typename Allocator = DefaultAllocator>
Scalar Emrys::MeasurementUpdate< Space, MeasurementSpace, Count, Scalar_, Allocator >::logLikelihood ( ) const
inlinenodiscard
Returns
the observation's log-likelihood, \( \log p(z) = \log \sum_k w_k \, p(z \mid k) \)

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