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

Reducing an update's branches (decisions.md [weighted-branches], [reduction-policies], [composed-features]): the Collapse, Select, and Keep policies, the Gate that rejects branches by a chi-squared test before another policy, the ReductionPolicy and MixtureReductionPolicy concepts a filter's update() requires of its policy, which a policy of the user's own meets [user-extension-points], and filterUpdate(), which turns an update into the FilterUpdate a filter returns. More...

#include <array>
#include <concepts>
#include <cstddef>
#include <expected>
#include <iterator>
#include <optional>
#include <ranges>
#include <span>
#include <tuple>
#include <type_traits>
#include <utility>
#include <vector>
#include <EmrysFilter/Models/Consistency.h>
#include <EmrysFilter/Distributions/Gaussian.h>
#include <EmrysFilter/Distributions/Mixture.h>
#include <EmrysFilter/Core/Allocation.h>
#include <EmrysFilter/Core/Forwarding.h>
#include <EmrysFilter/Core/Macros.h>
#include <EmrysFilter/Core/Math.h>
#include <EmrysFilter/Models/Measurement.h>
#include <EmrysFilter/Distributions/SampleSet.h>
#include <EmrysFilter/Distributions/Statistics.h>
#include <EmrysFilter/Core/Weights.h>

Go to the source code of this file.

Classes

struct  Emrys::reductions::Collapse
 Reduction policy that moment-matches an update's branches into one Gaussian: soft outlier rejection, as in the probabilistic data association of Bar-Shalom and Tse (1975). More...
struct  Emrys::reductions::Select
 Reduction policy that keeps the most probable branch: hard rejection by comparing the noise components with each other. More...
struct  Emrys::reductions::Keep
 Reduction policy that keeps every branch, each added to the filter's output with its own posterior probability (see ReductionPolicy). More...
struct  Emrys::NisThreshold< Scalar >
 A Gate's threshold given directly as a normalized innovation squared, rather than as a probability, in the scalar it is written in (NisThreshold{9.21f} is a float). More...
class  Emrys::reductions::Gate< Inner, Scalar_ >
 Reduction policy that rejects branches by a chi-squared test on their normalized innovation squared, then reduces the rest with Inner. More...

Namespaces

namespace  Emrys::reductions
 The reduction policies, each made by its factory (decisions.md [policy-factories], [reduction-policies]): collapse(), select(), keep(), and gate().

Concepts

concept  Emrys::ReductionPolicy
 A reduction policy for a filter that keeps a State per update: it reduces an update's branches to at most one State (decisions.md [reduction-policies]).
concept  Emrys::MixtureReductionPolicy
 A reduction policy a MixtureFilter over Component_ takes for Update: one that reduces the branches into an output that holds several components (see ReductionPolicy), so that one prior component becomes several, as Keep makes it.

Functions

constexpr Collapse Emrys::reductions::collapse ()
constexpr Select Emrys::reductions::select ()
constexpr Keep Emrys::reductions::keep ()
template<typename Value, typename Inner = Collapse>
requires std::is_arithmetic_v<Value>
Gate< Inner, internal::DeducedScalar< Value > > Emrys::reductions::gate (Value probability, Inner inner={})
template<RealScalar Scalar, typename Inner = Collapse>
Gate< Inner, Scalar > Emrys::reductions::gate (NisThreshold< Scalar > threshold, Inner inner={})
template<typename State, typename Policy, typename Branches>
requires internal::BranchRange<Branches> && internal::ReducesInto< Policy, Branches, internal::OneComponentOutput<State,
internal::BranchScalarOf<Branches>, std::optional<State>>>
std::optional< State > Emrys::reduceToOne (Policy const &policy, Branches &&branches)

Detailed Description

Reducing an update's branches (decisions.md [weighted-branches], [reduction-policies], [composed-features]): the Collapse, Select, and Keep policies, the Gate that rejects branches by a chi-squared test before another policy, the ReductionPolicy and MixtureReductionPolicy concepts a filter's update() requires of its policy, which a policy of the user's own meets [user-extension-points], and filterUpdate(), which turns an update into the FilterUpdate a filter returns.

Read Consistency.h next.