Skip to content
Snippets Groups Projects
Verified Commit 6613d1d4 authored by Sébastien Villemot's avatar Sébastien Villemot
Browse files

get_ar_ec_matrices.m: use sparse representation for the model

Ref. #1859
parent 49c55026
Branches
No related tags found
No related merge requests found
...@@ -68,12 +68,10 @@ else ...@@ -68,12 +68,10 @@ else
end end
%% Call Dynamic Function %% Call Dynamic Function
[~, g1] = feval([M_.fname '.dynamic'], ... g1 = feval([M_.fname '.sparse.dynamic_g1'], ones(3*M_.endo_nbr, 1), ones(1, M_.exo_nbr), ...
ones(max(max(M_.lead_lag_incidence)), 1), ... M_.params, zeros(M_.endo_nbr, 1), ...
ones(1, M_.exo_nbr), ... M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, ...
M_.params, ... M_.dynamic_g1_sparse_colptr);
zeros(M_.endo_nbr, 1), ...
1);
% Choose rows of Jacobian based on equation tags % Choose rows of Jacobian based on equation tags
ntags = length(M_.(model_type).(model_name).eqtags); ntags = length(M_.(model_type).(model_name).eqtags);
...@@ -88,8 +86,7 @@ g1 = -1 * g1(g1rows, :); ...@@ -88,8 +86,7 @@ g1 = -1 * g1(g1rows, :);
% Check for leads % Check for leads
if rows(M_.lead_lag_incidence) == 3 if rows(M_.lead_lag_incidence) == 3
idxs = M_.lead_lag_incidence(3, M_.lead_lag_incidence(3, :) ~= 0); assert(~any(any(g1(g1rows, 2*M_.endo_nbr+(1:M_.endo_nbr)))), ...
assert(~any(any(g1(g1rows, idxs))), ...
['You cannot have leads in the equations specified by ' strjoin(M_.(model_type).(model_name).eqtags, ',')]); ['You cannot have leads in the equations specified by ' strjoin(M_.(model_type).(model_name).eqtags, ',')]);
end end
...@@ -152,11 +149,11 @@ for i = 1:length(lhs) ...@@ -152,11 +149,11 @@ for i = 1:length(lhs)
for j = 1:length(rhsvars{i}.vars) for j = 1:length(rhsvars{i}.vars)
var = rhsvars{i}.vars(j); var = rhsvars{i}.vars(j);
if rhsvars{i}.lags(j) == -1 if rhsvars{i}.lags(j) == -1
g1col = M_.lead_lag_incidence(1, var); g1col = var;
else else
g1col = M_.lead_lag_incidence(2, var); g1col = var + M_.endo_nbr;
end end
if g1col ~= 0 && any(g1(:, g1col)) if any(g1(:, g1col))
if rhsvars{i}.arRhsIdxs(j) > 0 if rhsvars{i}.arRhsIdxs(j) > 0
% Fill AR % Fill AR
lag = findLagForVar(var, -rhsvars{i}.lags(j), 0, lhs); lag = findLagForVar(var, -rhsvars{i}.lags(j), 0, lhs);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment