diff --git a/matlab/kalman/likelihood/missing_observations_kalman_filter.m b/matlab/kalman/likelihood/missing_observations_kalman_filter.m
index ebc36aa6f67a4cd14bd5b7963e85d0b4cb7f3027..e0a3c21b8a14415ff7822846190d8193e42a69be 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 47c43602d8382b774c0f8f02b109020024ee8ff0..556db9ff1a3c9680f8a5c0a38d539e2c84fdea41 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';