rts#
Functions#
|
Wrapper for RTS smoother |
|
Jax implementation of the Rauch-Tung-Striebel (RTS) smoothing algorithm |
|
The y-independent smoothing gains G_k, k=0..N-2, derived from |
|
Batched-mean-path replay of rts_smoother, given precomputed G_all |
Module Contents#
- smolgp.solvers.rts.RTSSmoother(kernel, X, kalman_results)[source]#
Wrapper for RTS smoother
- Parameters:
kernel – StateSpaceModel kernel
X – data coordinates, e.g. time or (time, texp, instid)
kalman_results – output from Kalman filter (m_filtered, P_filtered, m_predicted, P_predicted)
- Returns:
smoothed means P_smooth: smoothed covariances
- Return type:
m_smooth
- smolgp.solvers.rts.rts_smoother(A, t, m_filtered, P_filtered, m_predicted, P_predicted)[source]#
Jax implementation of the Rauch-Tung-Striebel (RTS) smoothing algorithm
See Theorem 8.2 (pdf page 156) in “Bayesian Filtering and Smoothing” by Simo Särkkä for detailed description of the algorithm and notation.
- smolgp.solvers.rts.rts_gains(A, t, P_filtered, P_predicted)[source]#
The y-independent smoothing gains G_k, k=0..N-2, derived from P_filtered/P_predicted (from ONE prior kalman_filter call). Pointwise in k (jax.vmap, no scan needed).
Uses helpers.get_smoothing_gain (rather than the raw jnp.linalg.solve rts_smoother inlines) so a degenerate/near-singular P_predicted[k+1] is handled the same robust way the integrated smoother already relies on – a strict superset of rts_smoother’s own solve, since get_smoothing_gain falls back to its generic (plain solve) branch whenever P_predicted[k+1] is well-conditioned.
- Returns:
shape (N-1, dim, dim)
- Return type:
G_all
- smolgp.solvers.rts.rts_smoother_batched_mean(G_all, m_filtered_batch, m_predicted_batch)[source]#
Batched-mean-path replay of rts_smoother, given precomputed G_all (rts_gains) and the BATCHED filtered/predicted means (kalman_filter_batched_mean).
- Parameters:
G_all – (N-1, dim, dim)
m_filtered_batch – (M, N, dim)
m_predicted_batch – (M, N, dim)
- Returns:
(M, N, dim)
- Return type:
m_smoothed_batch