dynare/tests/practicing/datasaver.m

59 lines
1.3 KiB
Matlab

function datasaver (s,var_list)
% datasaver saves variables simulated by Dynare
% INPUT
% s: a string containing the name of the destination *.m file
% var_list: a character matrix containting the name of the variables
% to be saved (optional, default: all endogenous variables)
% OUTPUT
% none
% This is part of the examples included in F. Barillas, R. Colacito,
% S. Kitao, C. Matthes, T. Sargent and Y. Shin (2007) "Practicing
% Dynare".
% Modified by M. Juillard to make it also compatible with Dynare
% version 4 (12/4/07)
global lgy_ lgx_ y_ endo_nbr M_ oo_
% test and adapt for Dynare version 4
if isempty(lgy_)
lgy_ = M_.endo_names;
lgx_ + M_.exo_names;
y_ = oo_.endo_simul;
endo_nbr = M_.endo_nbr;
end
sm=[s,'.m'];
fid=fopen(sm,'w') ;
n = size(var_list,1);
if n == 0
n = endo_nbr;
ivar = [1:n]';
var_list = lgy_;
else
ivar=zeros(n,1);
for i=1:n
i_tmp = strmatch(var_list(i,:),lgy_,'exact');
if isempty(i_tmp)
error (['One of the specified variables does not exist']) ;
else
ivar(i) = i_tmp;
end
end
end
for i = 1:n
fprintf(fid,[lgy_(ivar(i),:), '=['],'\n') ;
fprintf(fid,'\n') ;
fprintf(fid,'%15.8g\n',y_(ivar(i),:)') ;
fprintf(fid,'\n') ;
fprintf(fid,'];\n') ;
fprintf(fid,'\n') ;
end
fclose(fid) ;
return ;