Ginan
Loading...
Searching...
No Matches
rtsSmoothing.cpp File Reference

Functions

void solveSystem (const int n, const int neqs, double *A, double *b)
 Solve a system of linear equations Ax = b using LAPACKE.
 
Architecture RTS_Smoothing__ ()
 Rauch-Tung-Striebel Smoothing.
 
void rtsOutput (KFState &kfState, ReceiverMap &receiverMap, const RtsConfiguration *config)
 Output filter states in chronological order from a reversed binary trace file.
 
void rtsSmoothing (KFState &kfState, ReceiverMap &receiverMap, bool write, const RtsConfiguration *config)
 Iterate over stored filter states in reverse and perform filtering.
 

Function Documentation

◆ RTS_Smoothing__()

Architecture RTS_Smoothing__ ( )

Rauch-Tung-Striebel Smoothing.

Combine estimations using filtered data from before and after each epoch. Complete filter vectors and matrices are stored in a binary file that is able to be read in reverse.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rtsOutput()

void rtsOutput ( KFState & kfState,
ReceiverMap & receiverMap,
const RtsConfiguration * config )

Output filter states in chronological order from a reversed binary trace file.

Parameters
kfStateState to get filter traces from
receiverMapmap of receivers
configConfiguration for dependency injection
Here is the call graph for this function:

◆ rtsSmoothing()

void rtsSmoothing ( KFState & kfState,
ReceiverMap & receiverMap,
bool write,
const RtsConfiguration * config )

Iterate over stored filter states in reverse and perform filtering.

Saves filtered states to a secondary binary file, which is in reverse-chronological order due to the save sequence. Most serial objects that are processed are merely stored or accumulated as prerequisites for the FILTER_PLUS object, which contains the state of the filter immediately after the update step. At that stage, the previously smoothed (next chronologically) filter state is combined with the next filter minus state (immediately before the next chronological update step), any state transitions, and the filter plus state, using the standard rts algorithm. The filtered state and a measurements object which has updated residuals are then stored in a binary file. If intermediate outputs are enabled (rare) it performs some outputs using each filter state, but typically outputs all states chronologically after the reverse running rts procedure has reached the first epoch and all data is available for output in the correct sequence.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ solveSystem()

void solveSystem ( const int n,
const int neqs,
double * A,
double * b )

Solve a system of linear equations Ax = b using LAPACKE.

Due to the characteristics of the matrix being used in the KF, we expect the matrix to be symmetric and positive definite Fallback order: posv -> sysv -> gesv -> fatal (positive definite, symmetric, general) TODO add chunking to solve large systems TODO move to algebra.cpp/hpp [might be needed for the KF as well]

Parameters
nSize of the system
neqsNumber of right-hand sides
AMatrix A
bRight-hand side b
Here is the call graph for this function:
Here is the caller graph for this function: