estimator-1.2.0.0: State-space estimation algorithms such as Kalman Filters

Safe HaskellNone
LanguageHaskell2010

Numeric.Estimator.Augment

Description

Some system models are best handled by injecting some measurements into the process model. These measurements are not truly part of the filter state, and so shouldn't appear in the state vector. However, when the process model runs, the state needs to be augmented with these measurements, and the process uncertainty needs to be augmented with their noise covariance.

As currently implemented, this only works for process models where the Filter type is a GaussianFilter instance. Generalizing this interface would be useful future work.

Synopsis

Documentation

data AugmentState state extra a Source #

Holder for the basic state vector plus the augmented extra state.

Constructors

AugmentState 

Fields

Instances

(Applicative state, Applicative extra) => Functor (AugmentState state extra) Source # 

Methods

fmap :: (a -> b) -> AugmentState state extra a -> AugmentState state extra b #

(<$) :: a -> AugmentState state extra b -> AugmentState state extra a #

(Applicative state, Applicative extra) => Applicative (AugmentState state extra) Source # 

Methods

pure :: a -> AugmentState state extra a #

(<*>) :: AugmentState state extra (a -> b) -> AugmentState state extra a -> AugmentState state extra b #

(*>) :: AugmentState state extra a -> AugmentState state extra b -> AugmentState state extra b #

(<*) :: AugmentState state extra a -> AugmentState state extra b -> AugmentState state extra a #

(Applicative state, Applicative extra, Traversable state, Traversable extra) => Foldable (AugmentState state extra) Source # 

Methods

fold :: Monoid m => AugmentState state extra m -> m #

foldMap :: Monoid m => (a -> m) -> AugmentState state extra a -> m #

foldr :: (a -> b -> b) -> b -> AugmentState state extra a -> b #

foldr' :: (a -> b -> b) -> b -> AugmentState state extra a -> b #

foldl :: (b -> a -> b) -> b -> AugmentState state extra a -> b #

foldl' :: (b -> a -> b) -> b -> AugmentState state extra a -> b #

foldr1 :: (a -> a -> a) -> AugmentState state extra a -> a #

foldl1 :: (a -> a -> a) -> AugmentState state extra a -> a #

toList :: AugmentState state extra a -> [a] #

null :: AugmentState state extra a -> Bool #

length :: AugmentState state extra a -> Int #

elem :: Eq a => a -> AugmentState state extra a -> Bool #

maximum :: Ord a => AugmentState state extra a -> a #

minimum :: Ord a => AugmentState state extra a -> a #

sum :: Num a => AugmentState state extra a -> a #

product :: Num a => AugmentState state extra a -> a #

(Applicative state, Applicative extra, Traversable state, Traversable extra) => Traversable (AugmentState state extra) Source # 

Methods

traverse :: Applicative f => (a -> f b) -> AugmentState state extra a -> f (AugmentState state extra b) #

sequenceA :: Applicative f => AugmentState state extra (f a) -> f (AugmentState state extra a) #

mapM :: Monad m => (a -> m b) -> AugmentState state extra a -> m (AugmentState state extra b) #

sequence :: Monad m => AugmentState state extra (m a) -> m (AugmentState state extra a) #

(Applicative state, Applicative extra, Distributive state, Distributive extra) => Distributive (AugmentState state extra) Source # 

Methods

distribute :: Functor f => f (AugmentState state extra a) -> AugmentState state extra (f a) #

collect :: Functor f => (a -> AugmentState state extra b) -> f a -> AugmentState state extra (f b) #

distributeM :: Monad m => m (AugmentState state extra a) -> AugmentState state extra (m a) #

collectM :: Monad m => (a -> AugmentState state extra b) -> m a -> AugmentState state extra (m b) #

(Applicative state, Applicative extra) => Additive (AugmentState state extra) Source # 

Methods

zero :: Num a => AugmentState state extra a #

(^+^) :: Num a => AugmentState state extra a -> AugmentState state extra a -> AugmentState state extra a #

(^-^) :: Num a => AugmentState state extra a -> AugmentState state extra a -> AugmentState state extra a #

lerp :: Num a => a -> AugmentState state extra a -> AugmentState state extra a -> AugmentState state extra a #

liftU2 :: (a -> a -> a) -> AugmentState state extra a -> AugmentState state extra a -> AugmentState state extra a #

liftI2 :: (a -> b -> c) -> AugmentState state extra a -> AugmentState state extra b -> AugmentState state extra c #

augmentProcess Source #

Arguments

:: (Num (Var t), Applicative state, Applicative extra, Process t, GaussianFilter (Filter t), State t ~ AugmentState state extra) 
=> t

base process model

-> extra (Var t)

extra state

-> state (state (Var t))

base process uncertainty

-> extra (extra (Var t))

extra process uncertainty

-> Filter t state (Var t)

prior (unaugmented) state

-> Filter t state (Var t)

posterior (unaugmented) state

Run an augmented process model with the given extra data.