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
Finfcase,Kstarwas 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-deficientFinfcase was triggered earlier. - In the rank-deficient
Finfcase, 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