diff --git a/matlab/kalman/likelihood/kalman_filter.m b/matlab/kalman/likelihood/kalman_filter.m index 73dc490cbc8c045b909f91bdc9b35a9ab8ec19c4..b85d3edada24e724618ce41793e2e148317f5b0b 100644 --- a/matlab/kalman/likelihood/kalman_filter.m +++ b/matlab/kalman/likelihood/kalman_filter.m @@ -194,13 +194,10 @@ while notsteady && t<=last end end if badly_conditioned_F - if ~all(abs(F(:))<kalman_tol) - % Use univariate filter (will remove observations with zero variance prediction error) - return - else - % Pathological case, discard draw. - return - end + % if ~all(abs(F(:))<kalman_tol), then use univariate filter (will remove + % observations with zero variance prediction error), otherwise this is a + % pathological case and the draw is discarded + return else F_singular = false; if rescale_prediction_error_covariance diff --git a/matlab/kalman/likelihood/kalman_filter_d.m b/matlab/kalman/likelihood/kalman_filter_d.m index c00efe662871ad982039586c1045181809650e78..8c0b850aca4aa963855ff914b65a6d6ba38bea0e 100644 --- a/matlab/kalman/likelihood/kalman_filter_d.m +++ b/matlab/kalman/likelihood/kalman_filter_d.m @@ -87,13 +87,9 @@ while rank(Z*Pinf*Z',diffuse_kalman_tol) && (t<=last) else %rank of F_{\infty,t} is 0 Fstar = Z*Pstar*Z' + H; % (5.7) in DK (2012) if rcond(Fstar) < kalman_tol %F_{*} is singular - if ~all(abs(Fstar(:))<kalman_tol) - % The univariate diffuse kalman filter should be used. - return - else %rank 0 - %pathological case, discard draw - return - end + % if ~all(abs(Fstar(:))<kalman_tol), then use univariate diffuse filter, + % otherwise this is a pathological case and the draw is discarded + return else iFstar = inv(Fstar); dFstar = det(Fstar); diff --git a/matlab/kalman/likelihood/kalman_filter_fast.m b/matlab/kalman/likelihood/kalman_filter_fast.m index 2e7472b7473a3c787fc1c68766f1f9ff0500acf7..e7815f52ee33de9e5ddb0492e9e7f1068713d790 100644 --- a/matlab/kalman/likelihood/kalman_filter_fast.m +++ b/matlab/kalman/likelihood/kalman_filter_fast.m @@ -151,13 +151,9 @@ while notsteady && t<=last v = Y(:,t)-a(Z); end if rcond(F) < kalman_tol - if ~all(abs(F(:))<kalman_tol) - % The univariate diffuse kalman filter should be used. - return - else - %pathological case, discard draw - return - end + % if ~all(abs(F(:))<kalman_tol), then use univariate diffuse filter, otherwise + % this is a pathological case and the draw is discarded + return else F_singular = 0; dF = det(F); diff --git a/matlab/kalman/likelihood/missing_observations_kalman_filter.m b/matlab/kalman/likelihood/missing_observations_kalman_filter.m index 4ad63011b8e4a092de1ad4eb2141a55ff78a4a55..bf4407e617d8b9802595b27a49a18c9cf9a78433 100644 --- a/matlab/kalman/likelihood/missing_observations_kalman_filter.m +++ b/matlab/kalman/likelihood/missing_observations_kalman_filter.m @@ -191,13 +191,9 @@ while notsteady && t<=last end end if badly_conditioned_F && (~occbin_.status || (occbin_.status && t<first_period_occbin_update)) - if ~all(abs(F(:))<kalman_tol) - % Use univariate filter. - return - else - % Pathological case, discard draw - return - end + % if ~all(abs(F(:))<kalman_tol), then use univariate filter, otherwise this is a + % pathological case and the draw is discarded + return else F_singular = false; end diff --git a/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m b/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m index bdc64985a27bd2290e16aa05de29686a2f05a7b5..8754eaf63e658d1d907225714d009cd91f170ac3 100644 --- a/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m +++ b/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m @@ -105,13 +105,9 @@ while rank(Pinf,diffuse_kalman_tol) && (t<=last) else %rank of F_{\infty,t} is 0 Fstar = ZZ*Pstar*ZZ' + H(d_index,d_index); % (5.7) in DK (2012) if rcond(Fstar) < kalman_tol %F_{*} is singular - if ~all(abs(Fstar(:))<kalman_tol) - % The univariate diffuse kalman filter should be used. - return - else %rank 0 - %pathological case, discard draw - return - end + % if ~all(abs(Fstar(:))<kalman_tol), then use univariate diffuse filter, + % otherwise this is a pathological case and the draw is discarded + return else iFstar = inv(Fstar); dFstar = det(Fstar); diff --git a/matlab/parallel/masterParallel.m b/matlab/parallel/masterParallel.m index e9a7f8070fc2fc80d134a2120cc028423cd2cfa4..3110a4a61ed7fd05f8e5d79ade83fd2ccdc329a1 100644 --- a/matlab/parallel/masterParallel.m +++ b/matlab/parallel/masterParallel.m @@ -710,11 +710,7 @@ if parallel_recover ==0 pcerdone(j) = prtfrc; idCPU(j) = njob; if isoctave || options_.console_mode - if (~ispc || strcmpi('unix',Parallel(indPC).OperatingSystem)) - statusString = [statusString, int2str(j), ' %3.f%% done! ']; - else - statusString = [statusString, int2str(j), ' %3.f%% done! ']; - end + statusString = [statusString, int2str(j), ' %3.f%% done! ']; else status_String{j} = waitbarString; status_Title{j} = waitbarTitle; @@ -722,11 +718,7 @@ if parallel_recover ==0 catch % ME % To define! if isoctave || options_.console_mode - if (~ispc || strcmpi('unix',Parallel(indPC).OperatingSystem)) - statusString = [statusString, int2str(j), ' %3.f%% done! ']; - else - statusString = [statusString, int2str(j), ' %3.f%% done! ']; - end + statusString = [statusString, int2str(j), ' %3.f%% done! ']; end end end