diff --git a/matlab/+pac/+update/parameters.m b/matlab/+pac/+update/parameters.m index b27a297d2..ca78f7b43 100644 --- a/matlab/+pac/+update/parameters.m +++ b/matlab/+pac/+update/parameters.m @@ -62,7 +62,7 @@ if ~isfield(varcalib, 'CompanionMatrix') || any(isnan(varcalib.CompanionMatrix(: end % Build the vector of PAC parameters (ECM parameter + autoregressive parameters). -pacvalues = DynareModel.params(pacmodel.equation_params); +pacvalues = DynareModel.params([pacmodel.ec.params; pacmodel.ec.params]); % Get the indices for the stationary/nonstationary variables in the VAR system. if any(varmodel.nonstationary) diff --git a/matlab/get_companion_matrix.m b/matlab/get_companion_matrix.m index d408e0382..7af4c03e4 100644 --- a/matlab/get_companion_matrix.m +++ b/matlab/get_companion_matrix.m @@ -32,30 +32,30 @@ global oo_ get_ar_ec_matrices(var_model_name); % Get the number of lags -p = length(oo_.var.(var_model_name).ar); +p = size(oo_.var.(var_model_name).ar, 3); % Get the number of variables -n = length(oo_.var.(var_model_name).ar{1}); +n = length(oo_.var.(var_model_name).ar(:,:,1)); -if all(cellfun(@iszero, oo_.var.(var_model_name).ecm)) +if all(~oo_.var.(var_model_name).ec(:)) % Build the companion matrix (standard VAR) oo_.var.(var_model_name).CompanionMatrix = zeros(n*p); - oo_.var.(var_model_name).CompanionMatrix(1:n,1:n) = oo_.var.(var_model_name).ar{1}; + oo_.var.(var_model_name).CompanionMatrix(1:n,1:n) = oo_.var.(var_model_name).ar(:,:,1); if p>1 for i=2:p - oo_.var.(var_model_name).CompanionMatrix(1:n,(i-1)*n+(1:n)) = oo_.var.(var_model_name).ar{i}; + oo_.var.(var_model_name).CompanionMatrix(1:n,(i-1)*n+(1:n)) = oo_.var.(var_model_name).ar(:,:,i); oo_.var.(var_model_name).CompanionMatrix((i-1)*n+(1:n),(i-2)*n+(1:n)) = eye(n); end end else B = zeros(n,n,p+1); - idx = oo_.var.(var_model_name).ecm_idx; - B(:,:,1) = oo_.var.(var_model_name).ar{1}; + idx = oo_.var.(var_model_name).ec_idx; + B(:,:,1) = oo_.var.(var_model_name).ar(:,:,1); B(idx, idx, 1) = B(idx,idx, 1) + eye(length(idx)); for i=2:p - B(idx,idx,i) = oo_.var.(var_model_name).ar{i}(idx,idx)-oo_.var.(var_model_name).ar{i-1}(idx,idx); + B(idx,idx,i) = oo_.var.(var_model_name).ar(idx,idx,i)-oo_.var.(var_model_name).ar(idx,idx,i-1); end - B(idx,idx,p+1) = -oo_.var.(var_model_name).ar{p}(idx,idx); + B(idx,idx,p+1) = -oo_.var.(var_model_name).ar(idx,idx,p); % Build the companion matrix (VECM, rewrite in levels) oo_.var.(var_model_name).CompanionMatrix = zeros(n*(p+1)); for i=1:p