From 86445832fd83599dd989db6c08ef802a654d4fc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=28Charybdis=29?= Date: Fri, 10 Aug 2018 14:52:07 +0200 Subject: [PATCH] Added routine returning true iff a variable is an auxiliary variable. --- matlab/isauxiliary.m | 68 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 matlab/isauxiliary.m diff --git a/matlab/isauxiliary.m b/matlab/isauxiliary.m new file mode 100644 index 000000000..a3788dde0 --- /dev/null +++ b/matlab/isauxiliary.m @@ -0,0 +1,68 @@ +function b = isauxiliary(var, type) + +% Returns true if var is an auxiliary variable. +% +% INPUTS +% - var [string] Name of the variable. +% - type [integer] Type of auxiliary variable. +% +% OUTPUTS +% - b [logical] +% +% REMARKS +% +% Types for auxiliary variables are as follows: +% +% - 0, Lead on endogenous variable (substitute for endo leads >= 2) +% - 1, Lag on endogenous variable (ubstitute for endo lags >= 2) +% - 2, Lead on exogenous variable (ubstitute for exo leads >= 1) +% - 3, Lag on exogenous variable (substitute for exo lags >= 1) +% - 4 Expectation (substitute for Expectation Operator) +% - 5, Diff forward (substitute for the differentiate of a forward variable) +% - 6, Multipliers for FOC of Ramsey Problem +% - 7, Variable for var_model with order > abs(min_lag()) present in model +% - 8, Variable for Diff operator +% - 9, Lag on Diff +% - 10, Unary operator (log, exp) + +% Copyright (C) 2018 Dynare Team +% +% This file is part of Dynare. +% +% Dynare is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% Dynare is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Dynare. If not, see . + +global M_ + +b = false; + +id = find(strcmp(var, M_.endo_names)); + +if isempty(id) + return +end + +if id<=M_.orig_endo_nbr + return +else + b = true; + if nargin<2 + return + end +end + +auxinfo = M_.aux_vars(get_aux_variable_id(id)); + +if ~isequal(auxinfo.type, type) + b = false; +end \ No newline at end of file