EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Emrys::RandomWalk< Path, Scalar_ > Class Template Reference

A model driven by white noise alone: \( x' = x \), with noise \( Q_c \, \Delta t \) on its differences. More...

#include <EmrysFilter/Models/ProcessModel.h>

Inheritance diagram for Emrys::RandomWalk< Path, Scalar_ >:
Emrys::ProcessFunction< internal::IdentityStep, internal::ReadsOne< Path >, internal::WritesOf< Path >, AffineIn< internal::PathTag< Path > >, internal::DiscreteNoise< internal::RandomWalkNoise< internal::DifferenceSpaceOf< internal::PathTag< Path > >::type::FixedValueDimension, double > > >

Public Types

using Scalar = Scalar_
 the scalar type of the spectral density
using SpectralDensityMatrix = Eigen::Matrix<Scalar_, Dimension, Dimension>
 The spectral density's type: \( d \times d \) over the block's differences.

Public Member Functions

 RandomWalk (Scalar_ spectralDensity)
 Spectral density spectralDensity on every axis, independently.
 RandomWalk (SpectralDensityMatrix const &spectralDensity)
 Spectral density matrix spectralDensity.
SpectralDensityMatrix const & spectralDensity () const

Static Public Attributes

static constexpr int Dimension = Differences::FixedValueDimension
 Dimension of the block's differences.

Detailed Description

template<typename Path, RealScalar Scalar_ = double>
class Emrys::RandomWalk< Path, Scalar_ >

A model driven by white noise alone: \( x' = x \), with noise \( Q_c \, \Delta t \) on its differences.

Path is a tag or a TagPath to a fixed-size block, such as a sensor bias. The spectral density \( Q_c \) is a \( d \times d \) matrix over the block's differences, so it applies as well to a block whose differences have another size than its values: a random walk on a UnitQuaternion attitude holds the attitude and adds the noise to its rotation vector (decisions.md [continuous-time-noise]). It is the exact discretization of a Wiener process. The model is affine in its block and returns its Jacobian, the identity, so Linearized predicts it exactly without differentiating.

Scalar_ is the type of \( Q_c \). The step computes in the scalar of the step it is given, the filter's, converting \( Q_c \) to it where the two differ.

Member Function Documentation

◆ spectralDensity()

template<typename Path, RealScalar Scalar_ = double>
SpectralDensityMatrix const & Emrys::RandomWalk< Path, Scalar_ >::spectralDensity ( ) const
inlinenodiscard
Returns
the spectral density \( Q_c \) of the white noise on the block

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