parent
de337ad72e
commit
30cbcdbb55
|
@ -61,10 +61,10 @@ switch task
|
|||
if horizon == 0
|
||||
horizon = 5;
|
||||
end
|
||||
if size(oo_.endo_simul,2) < maximum_lag
|
||||
if isempty(M_.endo_histval)
|
||||
y0 = repmat(oo_.steady_state,1,maximum_lag);
|
||||
else
|
||||
y0 = oo_.endo_simul(:,1:maximum_lag);
|
||||
y0 = M_.endo_histval;
|
||||
end
|
||||
case 'smoother'
|
||||
horizon = options_.forecast;
|
||||
|
|
|
@ -332,6 +332,7 @@ oo_.exo_det_steady_state = [];
|
|||
oo_.exo_det_simul = [];
|
||||
|
||||
M_.params = [];
|
||||
M_.endo_histval = [];
|
||||
|
||||
% BVAR
|
||||
M_.bvar = [];
|
||||
|
|
|
@ -35,13 +35,16 @@ if isempty(oo_.steady_state)
|
|||
oo_.steady_state = zeros(M_.endo_nbr,1);
|
||||
end
|
||||
|
||||
if isempty(oo_.endo_simul)
|
||||
if isempty(M_.endo_histval)
|
||||
if isempty(ys0_)
|
||||
oo_.endo_simul = [oo_.steady_state*ones(1,M_.maximum_lag+options_.periods+M_.maximum_lead)];
|
||||
else
|
||||
oo_.endo_simul = [ys0_*ones(1,M_.maximum_lag) oo_.steady_state*ones(1,options_.periods+M_.maximum_lead)];
|
||||
end
|
||||
elseif size(oo_.endo_simul,2) < M_.maximum_lag+M_.maximum_lead+options_.periods
|
||||
oo_.endo_simul = [oo_.endo_simul ...
|
||||
oo_.steady_state*ones(1,M_.maximum_lag+options_.periods+M_.maximum_lead-size(oo_.endo_simul,2),1)];
|
||||
else
|
||||
if ~isempty(ys0_)
|
||||
error('histval and endval cannot be used simultaneously')
|
||||
end
|
||||
oo_.endo_simul = [M_.endo_histval ...
|
||||
oo_.steady_state*ones(1,options_.periods+M_.maximum_lead)];
|
||||
end
|
||||
|
|
|
@ -130,13 +130,10 @@ if options_.periods > 0 && ~PI_PCL_solver
|
|||
options_ =options_old;
|
||||
return
|
||||
end
|
||||
% Note that the first column of oo_.endo_simul is preserved by the following
|
||||
% call to simult; this is important because stoch_simul can be followed by
|
||||
% forecast (see ticket #157)
|
||||
if size(oo_.endo_simul,2) == 0
|
||||
if isempty(M_.endo_histval)
|
||||
y0 = oo_.dr.ys;
|
||||
else
|
||||
y0 = oo_.endo_simul(:,1);
|
||||
y0 = M_.endo_histval;
|
||||
end
|
||||
oo_.endo_simul = simult(y0,oo_.dr);
|
||||
dyn2vec;
|
||||
|
|
|
@ -82,10 +82,10 @@ elseif options_.periods ~= 0
|
|||
options_ =options_old;
|
||||
return
|
||||
end
|
||||
if size(oo_.endo_simul,2) < maximum_lag
|
||||
if isempty(M_.endo_histval)
|
||||
y0 = oo_.dr.ys;
|
||||
else
|
||||
y0 = oo_.endo_simul(:,1);
|
||||
y0 = M_.endo_histval;
|
||||
end
|
||||
oo_.endo_simul = simult(y0,oo_.dr);
|
||||
dyn2vec;
|
||||
|
|
|
@ -132,8 +132,7 @@ InitValStatement::writeOutput(ostream &output, const string &basename) const
|
|||
void
|
||||
InitValStatement::writeOutputPostInit(ostream &output) const
|
||||
{
|
||||
output << "oo_.endo_simul=[oo_.steady_state*ones(1,M_.maximum_lag)];" << endl
|
||||
<< "if M_.exo_nbr > 0;" << endl
|
||||
output << "if M_.exo_nbr > 0;" << endl
|
||||
<< "\too_.exo_simul = [ones(M_.maximum_lag,1)*oo_.exo_steady_state'];" << endl
|
||||
<<"end;" << endl
|
||||
<< "if M_.exo_det_nbr > 0;" << endl
|
||||
|
@ -189,7 +188,7 @@ HistValStatement::writeOutput(ostream &output, const string &basename) const
|
|||
output << "%" << endl
|
||||
<< "% HISTVAL instructions" << endl
|
||||
<< "%" << endl
|
||||
<< "oo_.endo_simul = zeros(M_.endo_nbr,M_.maximum_lag);" << endl;
|
||||
<< "M_.endo_histval = zeros(M_.endo_nbr,M_.maximum_lag);" << endl;
|
||||
|
||||
for (hist_values_t::const_iterator it = hist_values.begin();
|
||||
it != hist_values.end(); it++)
|
||||
|
@ -225,7 +224,7 @@ HistValStatement::writeOutput(ostream &output, const string &basename) const
|
|||
int tsid = symbol_table.getTypeSpecificID(symb_id) + 1;
|
||||
|
||||
if (type == eEndogenous)
|
||||
output << "oo_.endo_simul( " << tsid << ", M_.maximum_lag + " << lag << ") = ";
|
||||
output << "M_.endo_histval( " << tsid << ", M_.maximum_lag + " << lag << ") = ";
|
||||
else if (type == eExogenous)
|
||||
output << "oo_.exo_simul( M_.maximum_lag + " << lag << ", " << tsid << " ) = ";
|
||||
else if (type != eExogenousDet)
|
||||
|
|
|
@ -71,7 +71,7 @@ public:
|
|||
InitValStatement(const init_values_t &init_values_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
virtual void writeOutput(ostream &output, const string &basename) const;
|
||||
//! Writes initializations for oo_.endo_simul, oo_.exo_simul and oo_.exo_det_simul
|
||||
//! Writes initializations for oo_.exo_simul and oo_.exo_det_simul
|
||||
void writeOutputPostInit(ostream &output) const;
|
||||
};
|
||||
|
||||
|
|
|
@ -49,4 +49,7 @@ a(-1) = 0.3;
|
|||
u(-1) = 0.1;
|
||||
end;
|
||||
|
||||
stoch_simul(nograph);
|
||||
stoch_simul(nograph, periods = 200);
|
||||
|
||||
forecast;
|
||||
|
||||
|
|
Loading…
Reference in New Issue