tesseract++ 0.0.1
N-dimensional tensor library for embedded systems
Loading...
Searching...
No Matches
Namespaces | Functions
rank_update.h File Reference

Symmetric rank-k update: P' = F·P·Fᵀ + Q. More...

#include "config.h"
#include "fused/fused_matrix.h"
Include dependency graph for rank_update.h:

Go to the source code of this file.

Namespaces

namespace  matrix_algorithms
 

Functions

template<typename T , my_size_t N>
FusedMatrix< T, N, N > matrix_algorithms::symmetric_rank_k_update (const FusedMatrix< T, N, N > &F, const FusedMatrix< T, N, N > &P, const FusedMatrix< T, N, N > &Q)
 Compute the symmetric rank-k update P' = F·P·Fᵀ + Q.
 
template<typename T , my_size_t N>
FusedMatrix< T, N, N > matrix_algorithms::symmetric_rank_k_update (const FusedMatrix< T, N, N > &F, const FusedMatrix< T, N, N > &P)
 Compute the symmetric rank-k update P' = F·P·Fᵀ (no noise term).
 

Detailed Description

Symmetric rank-k update: P' = F·P·Fᵀ + Q.

Core building block for Kalman filter prediction step. Propagates a covariance matrix P through a state transition F with process noise Q.


ALGORITHM

P' = F · P · Fᵀ + Q

Computed as two matrix multiplications and one addition:

  1. tmp = F · P (N×N · N×N → N×N)
  2. P' = tmp · Fᵀ + Q (N×N · N×N + N×N → N×N)

Complexity: O(2N³) for the two multiplications, O(N²) for the addition.

Note
For Kalman filters where F is sparse or structured (e.g. identity plus small perturbation), specialized implementations can exploit that structure. This generic version assumes dense F.
The result is guaranteed symmetric if P and Q are symmetric, since F·P·Fᵀ preserves symmetry and Q is symmetric by definition (covariance).