diff --git a/matlab/kalman/likelihood/missing_observations_kalman_filter.m b/matlab/kalman/likelihood/missing_observations_kalman_filter.m index ebc36aa6f..e0a3c21b8 100644 --- a/matlab/kalman/likelihood/missing_observations_kalman_filter.m +++ b/matlab/kalman/likelihood/missing_observations_kalman_filter.m @@ -67,6 +67,10 @@ if isempty(diffuse_periods) diffuse_periods = 0; end +if isequal(H,0) + H = zeros(pp,pp); +end + % Get sample size. smpl = last-start+1; diff --git a/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m b/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m index 47c43602d..556db9ff1 100644 --- a/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m +++ b/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m @@ -67,6 +67,10 @@ dlik = zeros(smpl,1); % Initialization of the vector gathering the densitie dLIK = Inf; % Default value of the log likelihood. oldK = Inf; +if isequal(H,0) + H = zeros(pp,pp); +end + while rank(Pinf,kalman_tol) && (t<=last) s = t-start+1; d_index = data_index{t}; @@ -107,7 +111,7 @@ while rank(Pinf,kalman_tol) && (t<=last) dlik(s) = log(det(Finf)); iFinf = inv(Finf); Kinf = Pinf*ZZ'*iFinf; - Fstar = ZZ*Pstar*ZZ' + H; + Fstar = ZZ*Pstar*ZZ' + H(d_index,d_index); Kstar = (Pstar*ZZ'-Kinf*Fstar)*iFinf; Pstar = T*(Pstar-Pstar*ZZ'*Kinf'-Pinf*ZZ'*Kstar')*T'+QQ; Pinf = T*(Pinf-Pinf*ZZ'*Kinf')*T';