From 05fc096569e15e89d8d13b08799321c0313b168d Mon Sep 17 00:00:00 2001 From: Marco Ratto Date: Tue, 13 Oct 2015 17:15:01 +0200 Subject: [PATCH] Make multivariate kalman filter and smoother robust to badly scaled covariance matrix of observables. This avoids shifting to univariate filter in most cases. --- matlab/kalman/likelihood/kalman_filter.m | 11 ++++++----- matlab/kalman/likelihood/kalman_filter_fast.m | 2 +- matlab/kalman/likelihood/kalman_filter_ss.m | 4 ++-- .../likelihood/missing_observations_kalman_filter.m | 11 ++++++----- matlab/missing_DiffuseKalmanSmootherH1_Z.m | 6 ++++-- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/matlab/kalman/likelihood/kalman_filter.m b/matlab/kalman/likelihood/kalman_filter.m index 8dee95f06..14208f471 100644 --- a/matlab/kalman/likelihood/kalman_filter.m +++ b/matlab/kalman/likelihood/kalman_filter.m @@ -169,7 +169,8 @@ while notsteady && t<=last v = Y(:,t)-a(Z); F = P(Z,Z) + H; end - if rcond(F) < kalman_tol + sig=sqrt(diag(F)); + if any(diag(F)