2008-08-01 14:40:33 +02:00
|
|
|
function [z,zss]=dyn2vec(s1,s2)
|
|
|
|
% function [z,zss]=dyn2vec(s1,s2)
|
2007-12-21 17:57:36 +01:00
|
|
|
% Takes Dynare variables from oo_.endo_simul and copies them into matlab global vectors
|
2005-02-18 20:54:39 +01:00
|
|
|
%
|
2007-12-21 17:57:36 +01:00
|
|
|
% INPUTS
|
|
|
|
% s1: subset of variables to be saved
|
|
|
|
% s2: optional parameter, copies Dynare variables (s1) in matlab ones (s2)
|
|
|
|
%
|
|
|
|
% OUTPUTS
|
|
|
|
% z: subset of oo_.endo_simul
|
|
|
|
% zss: matrix of variables in steady state
|
|
|
|
%
|
|
|
|
% SPECIAL REQUIREMENTS
|
|
|
|
% none
|
|
|
|
%
|
|
|
|
|
2011-02-04 17:27:33 +01:00
|
|
|
% Copyright (C) 2001-2009 Dynare Team
|
2008-08-01 14:40:33 +02: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/>.
|
2005-02-18 20:54:39 +01:00
|
|
|
|
2009-12-16 18:17:34 +01:00
|
|
|
global M_ oo_ options_
|
2005-02-18 20:54:39 +01:00
|
|
|
|
2009-12-16 18:17:34 +01:00
|
|
|
if options_.smpl == 0
|
2006-07-31 17:46:55 +02:00
|
|
|
k = [1:size(oo_.endo_simul,2)];
|
2009-12-16 18:17:34 +01:00
|
|
|
else
|
2005-02-18 20:54:39 +01:00
|
|
|
k = [M_.maximum_lag+options_.smpl(1):M_.maximum_lag+options_.smpl(2)];
|
2009-12-16 18:17:34 +01:00
|
|
|
end
|
2005-02-18 20:54:39 +01:00
|
|
|
|
2009-12-16 18:17:34 +01:00
|
|
|
if nargin == 0
|
2005-02-18 20:54:39 +01:00
|
|
|
if nargout > 0
|
2009-12-16 18:17:34 +01:00
|
|
|
t = ['DYNARE dyn2vec error: the function doesn''t return values when' ...
|
|
|
|
' used without input argument'];
|
|
|
|
error(t);
|
2005-02-18 20:54:39 +01:00
|
|
|
end
|
2006-07-31 17:46:55 +02:00
|
|
|
for i=1:size(oo_.endo_simul,1)
|
2009-12-16 18:17:34 +01:00
|
|
|
assignin('base',deblank(M_.endo_names(i,:)),oo_.endo_simul(i,k)');
|
2005-02-18 20:54:39 +01:00
|
|
|
end
|
|
|
|
return
|
2009-12-16 18:17:34 +01:00
|
|
|
else
|
2005-02-18 20:54:39 +01:00
|
|
|
j = strmatch(s1,M_.endo_names,'exact');
|
|
|
|
if ~ isempty(j)
|
2009-12-16 18:17:34 +01:00
|
|
|
z = oo_.endo_simul(j,k)';
|
2005-02-18 20:54:39 +01:00
|
|
|
else
|
2009-12-16 18:17:34 +01:00
|
|
|
j = strmatch(s1,M_.exo_names,'exact');
|
|
|
|
if ~ isempty(j)
|
|
|
|
if options_.smpl == 0
|
|
|
|
z = oo_.exo_simul(:,j);
|
|
|
|
else
|
|
|
|
z = oo_.exo_simul(M_.maximum_lag+options_.smpl(1):M_.maximum_lag+options_.smpl(2));
|
|
|
|
end
|
|
|
|
else
|
|
|
|
t = ['DYNARE dyn2vec error: variable ' deblank(s1(i,:)) ' doesn''t' ...
|
|
|
|
' exist.'] ;
|
|
|
|
error (t) ;
|
|
|
|
end
|
2005-02-18 20:54:39 +01:00
|
|
|
end
|
2009-12-16 18:17:34 +01:00
|
|
|
end
|
2005-02-18 20:54:39 +01:00
|
|
|
|
2009-12-16 18:17:34 +01:00
|
|
|
if nargout == 0
|
2005-02-18 20:54:39 +01:00
|
|
|
if nargin == 1
|
2009-12-16 18:17:34 +01:00
|
|
|
assignin('base',s1,z);
|
2005-02-18 20:54:39 +01:00
|
|
|
elseif nargin == 2
|
2009-12-16 18:17:34 +01:00
|
|
|
assignin('base',s2,z);
|
2005-02-18 20:54:39 +01:00
|
|
|
end
|
2009-12-16 18:17:34 +01:00
|
|
|
else
|
2005-02-18 20:54:39 +01:00
|
|
|
zss=oo_.steady_state(j);
|
2009-12-16 18:17:34 +01:00
|
|
|
end
|
|
|
|
|
2005-02-18 20:54:39 +01:00
|
|
|
% 02/23/01 MJ redone, incorporating FC's improvements
|
|
|
|
% 08/24/01 MJ replaced globlize by internal assignin
|
|
|
|
% 08/24/01 MJ added 'exact' to strmatch (thanks to David Vavra)
|
|
|
|
% 01/31/03 MJ added provision for alternative name of variable
|
|
|
|
|
|
|
|
|
|
|
|
|