Three bugfixes for missing_DiffuseKalmanSmootherH1_Z.m that led to wrong results
- In case of missing observations ('if isempty(di)'),
a(:,t)
was not propagated forward to updatea(:,t+1)
- In the rank-deficient
Finf
case,Kstar
was defined asT^(-1)*K^{(0)}
, while in the full rank it was defined asKstar=K^(0)
This leads to wrong results when switches between the two clauses occurr. Moreover, the later backwards pass relied onKstar=K^(0)
, leading to wrong results when the rank-deficientFinf
case was triggered earlier. - In the rank-deficient
Finf
case, the backward pass did not use the proper formulas, but rather the ones for the non-singular case
The implementation now consistently follows the one in kalman_filter_d.m