2009-12-16 18:17:34 +01:00
|
|
|
function ReshapeMatFiles(type, type2)
|
|
|
|
% function ReshapeMatFiles(type, type2)
|
|
|
|
% Reshapes and sorts (along the mcmc simulations) the mat files generated by DYNARE.
|
|
|
|
% 4D-arrays are splitted along the first dimension.
|
|
|
|
% 3D-arrays are splitted along the second dimension.
|
|
|
|
%
|
|
|
|
% INPUTS:
|
|
|
|
% type: statistics type in the repertory:
|
|
|
|
% dgse
|
|
|
|
% irf_bvardsge
|
|
|
|
% smooth
|
|
|
|
% filter
|
|
|
|
% error
|
|
|
|
% innov
|
|
|
|
% forcst
|
|
|
|
% forcst1
|
|
|
|
% type2: analysis type:
|
|
|
|
% posterior
|
|
|
|
% gsa
|
|
|
|
% prior
|
2017-05-16 15:10:20 +02:00
|
|
|
%
|
2009-12-16 18:17:34 +01:00
|
|
|
% OUTPUTS:
|
2017-05-16 15:10:20 +02:00
|
|
|
% none
|
2009-12-16 18:17:34 +01:00
|
|
|
%
|
|
|
|
% SPECIAL REQUIREMENTS
|
|
|
|
% none
|
|
|
|
|
2017-05-16 14:11:15 +02:00
|
|
|
% Copyright (C) 2003-2017 Dynare Team
|
2009-12-16 18:17:34 +01:00
|
|
|
%
|
|
|
|
% This file is part of Dynare.
|
|
|
|
%
|
|
|
|
% Dynare is free software: you can redistribute it and/or modify
|
|
|
|
% it under the terms of the GNU General Public License as published by
|
|
|
|
% the Free Software Foundation, either version 3 of the License, or
|
|
|
|
% (at your option) any later version.
|
|
|
|
%
|
|
|
|
% Dynare is distributed in the hope that it will be useful,
|
|
|
|
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
% GNU General Public License for more details.
|
|
|
|
%
|
|
|
|
% You should have received a copy of the GNU General Public License
|
|
|
|
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
global M_ options_
|
|
|
|
|
2017-05-16 12:42:01 +02:00
|
|
|
if nargin==1
|
2011-12-15 11:56:23 +01:00
|
|
|
MhDirectoryName = [ CheckPath('metropolis',M_.dname) filesep ];
|
2009-12-16 18:17:34 +01:00
|
|
|
else
|
|
|
|
if strcmpi(type2,'posterior')
|
2011-12-15 11:56:23 +01:00
|
|
|
MhDirectoryName = [CheckPath('metropolis',M_.dname) filesep ];
|
2009-12-16 18:17:34 +01:00
|
|
|
elseif strcmpi(type2,'gsa')
|
2017-05-16 12:42:01 +02:00
|
|
|
if options_.opt_gsa.morris==1
|
2011-12-15 11:56:23 +01:00
|
|
|
MhDirectoryName = [CheckPath('gsa/screen',M_.dname) filesep ];
|
2017-05-16 12:42:01 +02:00
|
|
|
elseif options_.opt_gsa.morris==2
|
2011-12-15 11:56:23 +01:00
|
|
|
MhDirectoryName = [CheckPath('gsa/identif',M_.dname) filesep ];
|
2011-02-25 09:27:33 +01:00
|
|
|
elseif options_.opt_gsa.pprior
|
2011-12-15 11:56:23 +01:00
|
|
|
MhDirectoryName = [CheckPath(['gsa' filesep 'prior'],M_.dname) filesep ];
|
2009-12-16 18:17:34 +01:00
|
|
|
else
|
2011-12-15 11:56:23 +01:00
|
|
|
MhDirectoryName = [CheckPath(['gsa' filesep 'mc'],M_.dname) filesep ];
|
2009-12-16 18:17:34 +01:00
|
|
|
end
|
|
|
|
else
|
2011-12-15 11:56:23 +01:00
|
|
|
MhDirectoryName = [CheckPath('prior',M_.dname) filesep ];
|
2017-05-16 15:10:20 +02:00
|
|
|
end
|
2009-12-16 18:17:34 +01:00
|
|
|
end
|
|
|
|
switch type
|
|
|
|
case 'irf_dsge'
|
|
|
|
CAPtype = 'IRF_DSGE';
|
|
|
|
TYPEsize = [ options_.irf , size(options_.varlist,1) , M_.exo_nbr ];
|
2017-05-16 15:10:20 +02:00
|
|
|
TYPEarray = 4;
|
2009-12-16 18:17:34 +01:00
|
|
|
case 'irf_bvardsge'
|
|
|
|
CAPtype = 'IRF_BVARDSGE';
|
2013-05-21 16:38:17 +02:00
|
|
|
TYPEsize = [ options_.irf , length(options_.varobs) , M_.exo_nbr ];
|
2017-05-16 15:10:20 +02:00
|
|
|
TYPEarray = 4;
|
2009-12-16 18:17:34 +01:00
|
|
|
case 'smooth'
|
|
|
|
CAPtype = 'SMOOTH';
|
|
|
|
TYPEsize = [ M_.endo_nbr , options_.nobs ];
|
|
|
|
TYPEarray = 3;
|
|
|
|
case 'filter'
|
|
|
|
CAPtype = 'FILTER';
|
|
|
|
TYPEsize = [ M_.endo_nbr , options_.nobs + 1 ];% TO BE CHECKED!
|
|
|
|
TYPEarray = 3;
|
|
|
|
case 'error'
|
|
|
|
CAPtype = 'ERROR';
|
2013-05-21 16:38:17 +02:00
|
|
|
TYPEsize = [ length(options_.varobs) , options_.nobs ];
|
2009-12-16 18:17:34 +01:00
|
|
|
TYPEarray = 3;
|
|
|
|
case 'innov'
|
|
|
|
CAPtype = 'INNOV';
|
|
|
|
TYPEsize = [ M_.exo_nbr , options_.nobs ];
|
|
|
|
TYPEarray = 3;
|
|
|
|
case 'forcst'
|
|
|
|
CAPtype = 'FORCST';
|
|
|
|
TYPEsize = [ M_.endo_nbr , options_.forecast ];
|
|
|
|
TYPEarray = 3;
|
|
|
|
case 'forcst1'
|
|
|
|
CAPtype = 'FORCST1';
|
|
|
|
TYPEsize = [ M_.endo_nbr , options_.forecast ];
|
|
|
|
TYPEarray = 3;
|
|
|
|
otherwise
|
|
|
|
disp('ReshapeMatFiles :: Unknown argument!')
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
TYPEfiles = dir([MhDirectoryName M_.fname '_' type '*.mat']);
|
|
|
|
NumberOfTYPEfiles = length(TYPEfiles);
|
|
|
|
B = options_.B;
|
|
|
|
|
|
|
|
switch TYPEarray
|
|
|
|
case 4
|
|
|
|
if NumberOfTYPEfiles > 1
|
|
|
|
NumberOfPeriodsPerTYPEfiles = ceil(TYPEsize(1)/NumberOfTYPEfiles);
|
|
|
|
foffset = NumberOfTYPEfiles-floor(TYPEsize(1)/NumberOfPeriodsPerTYPEfiles);
|
|
|
|
reste = TYPEsize(1)-NumberOfPeriodsPerTYPEfiles*(NumberOfTYPEfiles-foffset);
|
|
|
|
idx = 0;
|
|
|
|
jdx = 0;
|
|
|
|
for f1=1:NumberOfTYPEfiles-foffset
|
|
|
|
eval(['STOCK_' CAPtype ' = zeros(NumberOfPeriodsPerTYPEfiles,TYPEsize(2),TYPEsize(3),B);'])
|
|
|
|
for f2 = 1:NumberOfTYPEfiles
|
|
|
|
load([MhDirectoryName M_.fname '_' type int2str(f2) '.mat']);
|
2011-02-14 12:01:38 +01:00
|
|
|
eval(['STOCK_' CAPtype '(:,:,1:+size(stock_' type ',3),idx+1:idx+size(stock_' type ',4))=stock_' ...
|
2009-12-16 18:17:34 +01:00
|
|
|
type '(jdx+1:jdx+NumberOfPeriodsPerTYPEfiles,:,:,:);'])
|
|
|
|
eval(['idx = idx + size(stock_' type ',4);'])
|
|
|
|
end
|
|
|
|
%eval(['STOCK_' CAPtype ' = sort(STOCK_' CAPtype ',4);'])
|
|
|
|
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(f1) '.mat'],['STOCK_' CAPtype]);
|
|
|
|
jdx = jdx + NumberOfPeriodsPerTYPEfiles;
|
|
|
|
idx = 0;
|
|
|
|
end
|
|
|
|
if reste
|
|
|
|
eval(['STOCK_' CAPtype ' = zeros(reste,TYPEsize(2),TYPEsize(3),B);'])
|
|
|
|
for f2 = 1:NumberOfTYPEfiles
|
|
|
|
load([MhDirectoryName M_.fname '_' type int2str(f2) '.mat']);
|
|
|
|
eval(['STOCK_' CAPtype '(:,:,:,idx+1:idx+size(stock_' type ',4))=stock_' type '(jdx+1:jdx+reste,:,:,:);'])
|
|
|
|
eval(['idx = idx + size(stock_' type ',4);'])
|
|
|
|
end
|
|
|
|
%eval(['STOCK_' CAPtype ' = sort(STOCK_' CAPtype ',4);'])
|
2017-05-16 15:10:20 +02:00
|
|
|
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(NumberOfTYPEfiles-foffset+1) '.mat'],['STOCK_' CAPtype]);
|
2009-12-16 18:17:34 +01:00
|
|
|
end
|
|
|
|
else
|
|
|
|
load([MhDirectoryName M_.fname '_' type '1.mat']);
|
|
|
|
%eval(['STOCK_' CAPtype ' = sort(stock_' type ',4);'])
|
|
|
|
eval(['STOCK_' CAPtype ' = stock_' type ';'])
|
|
|
|
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(1) '.mat'],['STOCK_' CAPtype ]);
|
|
|
|
end
|
|
|
|
% Original file format may be useful in some cases...
|
|
|
|
% for file = 1:NumberOfTYPEfiles
|
|
|
|
% delete([MhDirectoryName M_.fname '_' type int2str(file) '.mat'])
|
|
|
|
% end
|
|
|
|
case 3
|
|
|
|
if NumberOfTYPEfiles>1
|
|
|
|
NumberOfPeriodsPerTYPEfiles = ceil( TYPEsize(2)/NumberOfTYPEfiles );
|
|
|
|
reste = TYPEsize(2)-NumberOfPeriodsPerTYPEfiles*(NumberOfTYPEfiles-1);
|
|
|
|
idx = 0;
|
|
|
|
jdx = 0;
|
|
|
|
for f1=1:NumberOfTYPEfiles-1
|
|
|
|
eval(['STOCK_' CAPtype ' = zeros(TYPEsize(1),NumberOfPeriodsPerTYPEfiles,B);'])
|
|
|
|
for f2 = 1:NumberOfTYPEfiles
|
|
|
|
load([MhDirectoryName M_.fname '_' type int2str(f2) '.mat']);
|
|
|
|
eval(['STOCK_' CAPtype '(:,:,idx+1:idx+size(stock_ ' type ',3))=stock_' type '(:,jdx+1:jdx+NumberOfPeriodsPerTYPEfiles,:);'])
|
|
|
|
eval(['idx = idx + size(stock_' type ',3);'])
|
|
|
|
end
|
|
|
|
%eval(['STOCK_' CAPtype ' = sort(STOCK_' CAPtype ',3);'])
|
|
|
|
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(f1) '.mat'],['STOCK_' CAPtype]);
|
|
|
|
jdx = jdx + NumberOfPeriodsPerTYPEfiles;
|
|
|
|
idx = 0;
|
|
|
|
end
|
|
|
|
eval(['STOCK_' CAPtype ' = zeros(TYPEsize(1),reste,B);'])
|
|
|
|
for f2 = 1:NumberOfTYPEfiles
|
|
|
|
load([MhDirectoryName M_.fname '_' type int2str(f2) '.mat']);
|
|
|
|
eval(['STOCK_' CAPtype '(:,:,idx+1:idx+size(stock_' type ',3))=stock_' type '(:,jdx+1:jdx+reste,:);'])
|
|
|
|
eval(['idx = idx + size(stock_' type ',3);'])
|
|
|
|
end
|
|
|
|
%eval(['STOCK_' CAPtype ' = sort(STOCK_' CAPtype ',3);'])
|
|
|
|
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(NumberOfTYPEfiles) '.mat'],['STOCK_' CAPtype]);
|
|
|
|
else
|
|
|
|
load([MhDirectoryName M_.fname '_' type '1.mat']);
|
|
|
|
%eval(['STOCK_' CAPtype ' = sort(stock_' type ',3);'])
|
|
|
|
eval(['STOCK_' CAPtype ' = stock_' type ';'])
|
2017-05-16 15:10:20 +02:00
|
|
|
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(1) '.mat'],['STOCK_' CAPtype ]);
|
2009-12-16 18:17:34 +01:00
|
|
|
end
|
|
|
|
% Original file format may be useful in some cases...
|
|
|
|
% for file = 1:NumberOfTYPEfiles
|
|
|
|
% delete([MhDirectoryName M_.fname '_' type int2str(file) '.mat'])
|
|
|
|
% end
|
|
|
|
end
|