From aeb1b92e77cfcd81fb040a3b2f91f1876f1a43ad Mon Sep 17 00:00:00 2001
From: Johannes Pfeifer <jpfeifer@gmx.de>
Date: Tue, 7 May 2024 14:00:24 +0200
Subject: [PATCH] :bug: make_ex_.m: correct matrix dimensions with datafile and
 exo_nbr==0

homotopy expects a matrix conformable with the initval_series
---
 matlab/perfect-foresight-models/make_ex_.m | 30 ++++++++++++----------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/matlab/perfect-foresight-models/make_ex_.m b/matlab/perfect-foresight-models/make_ex_.m
index 3234afbeca..f3a9f483fb 100644
--- a/matlab/perfect-foresight-models/make_ex_.m
+++ b/matlab/perfect-foresight-models/make_ex_.m
@@ -49,22 +49,26 @@ if isempty(oo_.initval_series)
             error('histval and endval cannot be used simultaneously')
         end
     end
-elseif M_.exo_nbr > 0
-    x = oo_.initval_series{M_.exo_names{:}}.data;
-    oo_.exo_simul = x(M_.orig_maximum_lag-M_.maximum_lag+1:M_.orig_maximum_lag + options_.periods + M_.maximum_lead,:);
-    if ~isempty(M_.exo_histval)
-        oo_.exo_simul(1:M_.maximum_lag, :) ...
-            = M_.exo_histval(:, 1:M_.maximum_lag)';
+else
+    if M_.exo_nbr > 0
+        x = oo_.initval_series{M_.exo_names{:}}.data;
+        oo_.exo_simul = x(M_.orig_maximum_lag-M_.maximum_lag+1:M_.orig_maximum_lag + options_.periods + M_.maximum_lead,:);
+        if ~isempty(M_.exo_histval)
+            oo_.exo_simul(1:M_.maximum_lag, :) ...
+                = M_.exo_histval(:, 1:M_.maximum_lag)';
+        end
+    else
+        oo_.exo_simul=zeros(M_.maximum_lag + options_.periods + M_.maximum_lead,M_.exo_nbr);
     end
-elseif M_.exo_det_nbr > 0
-    x_det = oo_.initval_series{M_.exo_det_names{:}}.data;
-    oo_.exo_det_simul = x_det(M_.orig_maximum_lag-M_.maximum_lag+1:M_.orig_maximum_lag + options_.periods + M_.maximum_lead,:);
-    if ~isempty(M_.exo_det_histval)
-        oo_.exo_det_simul(1:M_.maximum_lag, :) ...
-            = M_.exo_det_histval(:, 1:M_.maximum_lag)';
+    if M_.exo_det_nbr > 0
+        x_det = oo_.initval_series{M_.exo_det_names{:}}.data;
+        oo_.exo_det_simul = x_det(M_.orig_maximum_lag-M_.maximum_lag+1:M_.orig_maximum_lag + options_.periods + M_.maximum_lead,:);
+        if ~isempty(M_.exo_det_histval)
+            oo_.exo_det_simul(1:M_.maximum_lag, :) ...
+                = M_.exo_det_histval(:, 1:M_.maximum_lag)';
+        end
     end
 end
-
 % Initialize oo_.exo_det_simul
 if M_.exo_det_nbr > 0
     if isempty(M_.exo_det_histval)
-- 
GitLab