diff --git a/matlab/DsgeLikelihood.m b/matlab/DsgeLikelihood.m index bc35a43bfd1bcb7c321a9404e80b4ce6941e6283..5c2940d23aa7cc81ab971e99cbe63d8d341aa64c 100644 --- a/matlab/DsgeLikelihood.m +++ b/matlab/DsgeLikelihood.m @@ -241,15 +241,17 @@ function [fval,cost_flag,ys,trend_coeff,info] = DsgeLikelihood(xparam1,gend,data Z = QT(mf,:); R1 = QT'*R; - [u,s,v]=svd(Z*ST(:,1:nk),0); - k = find(abs(diag(s)) < 1e-8); +% [u,s,v]=svd(Z*ST(:,1:nk),0); + [QQ,RR,EE] = qr(Z*ST(:,1:nk),0); + k = find(abs(diag(RR)) < 1e-8); if length(k) > 0 - [junk,k1] = max(abs(v(:,k))); + k1 = EE(:,k); +% [junk,k1] = max(abs(v(:,k))); dd =ones(nk,1); dd(k1) = zeros(length(k1),1); Pinf(1:nk,1:nk) = diag(dd); end - + end %------------------------------------------------------------------------------ % 4. Likelihood evaluation diff --git a/matlab/DsgeSmoother.m b/matlab/DsgeSmoother.m index 7a07d715f59a7f93f947dbbac904576b82abd12e..cc8b050ff7188ce81cbd1762243393c0ace2f6f4 100644 --- a/matlab/DsgeSmoother.m +++ b/matlab/DsgeSmoother.m @@ -175,14 +175,15 @@ function [alphahat,etahat,epsilonhat,ahat,SteadyState,trend_coeff,aK,T,R,P,PK,d, Z = QT(mf,:); R1 = QT'*R; - [u,s,v]=svd(Z*ST(:,1:nk),0); - k = find(abs(diag(s)) < 1e-8); - if length(k) > 0 - [junk,k1] = max(abs(v(:,k))); - dd =ones(nk,1); - dd(k1) = zeros(length(k1),1); - Pinf(1:nk,1:nk) = diag(dd); - end +% $$$ [u,s,v]=svd(Z*ST(:,1:nk),0); +% $$$ k = find(abs(diag(s)) < 1e-8); +% $$$ if length(k) > 0 +% $$$ [junk,k1] = max(abs(v(:,k))); +% $$$ dd =ones(nk,1); +% $$$ dd(k1) = zeros(length(k1),1); +% $$$ Pinf(1:nk,1:nk) = diag(dd); +% $$$ end + Pinf(1:nk,1:nk) = eye(nk); end % ----------------------------------------------------------------------------- % 4. Kalman smoother