From bd9af2fa5ab5bb7416bb6b22b35d3930dda05691 Mon Sep 17 00:00:00 2001
From: Marco Ratto <marco.ratto@jrc.ec.europa.eu>
Date: Fri, 29 Jun 2012 00:50:54 +0200
Subject: [PATCH] Fixed bug reported by Rob Luginbuhl in dynare forum

---
 matlab/cosn.m                    | 3 +++
 matlab/ident_bruteforce.m        | 3 ++-
 matlab/identification_analysis.m | 1 +
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/matlab/cosn.m b/matlab/cosn.m
index 6e9674fda..216efd193 100644
--- a/matlab/cosn.m
+++ b/matlab/cosn.m
@@ -28,6 +28,9 @@ y = H(:,1);
 X = H(:,2:end);
 
 b=(X\y);
+if any(isnan(b)) || any(isinf(b)),
+    b=0;
+end
 yhat =  X*b;
 if rank(yhat),
     co = abs(y'*yhat/sqrt((y'*y)*(yhat'*yhat)));
diff --git a/matlab/ident_bruteforce.m b/matlab/ident_bruteforce.m
index 344fd408d..592ffcd07 100644
--- a/matlab/ident_bruteforce.m
+++ b/matlab/ident_bruteforce.m
@@ -56,7 +56,8 @@ for ll = 1:n,
                 pars{ii,ll} = [pars{ii,ll-1} NaN];
                 cosnJ(ii,ll) = cosnJ(ii,ll-1);
             else
-                pars{ii,ll} = tmp2(find(cosnJ2(:,1)==max(cosnJ2(:,1))),:);
+                tmp3 = tmp2(find(cosnJ2(:,1)==max(cosnJ2(:,1))),:);
+                pars{ii,ll} = tmp3(1,:);
             end
         else
             pars{ii,ll} = NaN(1,ll);
diff --git a/matlab/identification_analysis.m b/matlab/identification_analysis.m
index 9f0c245f5..12862b7df 100644
--- a/matlab/identification_analysis.m
+++ b/matlab/identification_analysis.m
@@ -284,6 +284,7 @@ if info(1)==0,
     normJ=1;
     [U, S, V]=svd(JJ(indJJ,:)./normJ,0);
     S=diag(S);
+    S=[S;zeros(size(JJ,2)-length(indJJ),1)];
     if nparam>8
         ide_moments.S = S([1:4, end-3:end]);
         ide_moments.V = V(:,[1:4, end-3:end]);
-- 
GitLab