0001
0002
0003 function make_ex_
0004 global M_ options_ oo_ ex0_ ex_det0_
0005
0006 options_ = set_default_option(options_,'periods',0);
0007
0008 if isempty(oo_.exo_steady_state)
0009 oo_.exo_steady_state = zeros(M_.exo_nbr,1);
0010 end
0011 if M_.exo_det_nbr > 1 & isempty(oo_.exo_det_steady_state)
0012 oo_.exo_det_steady_state = zeros(M_.exo_det_nbr,1);
0013 end
0014 if isempty(oo_.exo_simul)
0015 if isempty(ex0_)
0016 oo_.exo_simul = [ones(M_.maximum_lag+options_.periods+M_.maximum_lead,1)*oo_.exo_steady_state'];
0017 else
0018 oo_.exo_simul = [ones(M_.maximum_lag,1)*ex0_';ones(options_.periods+M_.maximum_lead,1)*oo_.exo_steady_state'];
0019 end
0020 elseif size(oo_.exo_simul,2) < length(oo_.exo_steady_state)
0021 k = size(oo_.exo_simul,2)+1:length(oo_.exo_steady_state);
0022 if isempty(ex0_)
0023 oo_.exo_simul = [oo_.exo_simul ones(M_.maximum_lag+size(oo_.exo_simul,1)+M_.maximum_lead,1)*oo_.exo_steady_state(k)'];
0024 else
0025 oo_.exo_simul = [oo_.exo_simul [ones(M_.maximum_lag,1)*ex0_(k)'; ones(size(oo_.exo_simul,1)-M_.maximum_lag+M_.maximum_lead, ...
0026 1)*oo_.exo_steady_state(k)']];
0027 end
0028 elseif size(oo_.exo_simul,1) < M_.maximum_lag+M_.maximum_lead+options_.periods
0029 if isempty(ex0_)
0030 oo_.exo_simul = [oo_.exo_simul; ones(M_.maximum_lag+options_.periods+M_.maximum_lead-size(oo_.exo_simul,1),1)*oo_.exo_steady_state'];
0031 else
0032 oo_.exo_simul = [ones(M_.maximum_lag,1)*ex0_'; oo_.exo_simul; ones(options_.periods+M_.maximum_lead-size(oo_.exo_simul, ...
0033 1),1)*oo_.exo_steady_state'];
0034 end
0035 end
0036 if M_.exo_det_nbr > 0
0037 if isempty(oo_.exo_det_simul)
0038 if isempty(ex_det0_)
0039 oo_.exo_det_simul = [ones(M_.maximum_lag+options_.periods+M_.maximum_lead,1)*oo_.exo_det_steady_state'];
0040 else
0041 oo_.exo_det_simul = [ones(M_.maximum_lag,1)*ex_det0_';ones(options_.periods+M_.maximum_lead,1)*oo_.exo_det_steady_state'];
0042 end
0043 elseif size(oo_.exo_det_simul,2) < length(oo_.exo_det_steady_state)
0044 k = size(oo_.exo_det_simul,2)+1:length(oo_.exo_det_steady_state);
0045 if isempty(ex_det0_)
0046 oo_.exo_det_simul = [oo_.exo_det_simul ones(M_.maximum_lag+size(oo_.exo_det_simul,1)+M_.maximum_lead,1)*oo_.exo_det_steady_state(k)'];
0047 else
0048 oo_.exo_det_simul = [oo_.exo_det_simul [ones(M_.maximum_lag,1)*ex_det0_(k)'; ones(size(oo_.exo_det_simul,1)-M_.maximum_lag+M_.maximum_lead, ...
0049 1)*oo_.exo_det_steady_state(k)']];
0050 end
0051 elseif size(oo_.exo_det_simul,1) < M_.maximum_lag+M_.maximum_lead+options_.periods
0052 if isempty(ex_det0_)
0053 oo_.exo_det_simul = [oo_.exo_det_simul; ones(M_.maximum_lag+options_.periods+M_.maximum_lead-size(oo_.exo_det_simul,1),1)*oo_.exo_det_steady_state'];
0054 else
0055 oo_.exo_det_simul = [ones(M_.maximum_lag,1)*ex_det0_'; oo_.exo_det_simul; ones(options_.periods+M_.maximum_lead-size(oo_.exo_det_simul, ...
0056 1),1)*oo_.exo_det_steady_state'];
0057 end
0058 end
0059 end
0060
0061