Cosmetic changes.

time-shift
Stéphane Adjemian (Charybdis) 2017-06-28 18:34:48 +02:00
parent 29a1e3d015
commit a6c7de4f08
1 changed files with 22 additions and 22 deletions

View File

@ -1,13 +1,12 @@
function plot_contributions(tagn, tagv, dseriesdata, params)
% function plot_contributions(tagn, tagv, dseriesdata, params)
% Return the lhs, rhs of an equation and the line it was defined
% on given its tag
function plot_contributions(tagn, tagv, ds, params)
% Plots the contribution to the lhs variable of the rhs variables in an equation.
%
% INPUTS
% tagn string tag name
% tagv string tag value
% dseriesdata matrix nobs x n endogenous in equation
% params struct params.param_name = param_value
% - tagn [string] Equation tag name
% - tagv [string] Equation tag value
% - ds [dseries] Object containing all the variables (exogenous and endogenous) appearing in the equation.
% - params [struct] parameter values
%
% OUTPUTS
% None
@ -32,7 +31,7 @@ function plot_contributions(tagn, tagv, dseriesdata, params)
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
global M_;
global M_
jsonfile = [M_.fname '_original.json'];
if exist(jsonfile, 'file') ~= 2
@ -44,9 +43,9 @@ jsonmodel = loadjson(jsonfile);
jsonmodel = jsonmodel.model;
[lhs, rhs, ~] = getEquationByTag(jsonmodel, tagn, tagv);
% replace variables with dseriesdata.variablename
for i = 1:length(dseriesdata.name)
rhs = regexprep(rhs, ['([\s\+\-\*\/\^]{1}|^)(' dseriesdata{i}.name{:} ')([\s\(\+\-\*\/\^|$]{1})'], '$1dseriesdata.$2$3');
% replace variables with ds.variablename
for i = 1:length(ds.name)
rhs = regexprep(rhs, ['([\s\+\-\*\/\^]{1}|^)(' ds{i}.name{:} ')([\s\(\+\-\*\/\^|$]{1})'], '$1ds.$2$3');
end
fields = fieldnames(params);
@ -55,24 +54,25 @@ for i = 1:length(fields)
end
% call function with all variable values
contribution = zeros(dseriesdata.nobs, dseriesdata.vobs + 1);
contribution = zeros(ds.nobs, ds.vobs + 1);
rhseval = eval(rhs);
contribution(:, 1) = rhseval.data;
dseriesdatabak = dseriesdata;
dseriesdatazero = dseries(zeros(dseriesdata.nobs, dseriesdata.vobs), ...
dseriesdata.firstdate, ...
dseriesdata.name);
for i = 1:dseriesdata.vobs
dseriesdata = dseriesdatazero;
dseriesdata{dseriesdatabak.name{i}} = dseriesdatabak{dseriesdatabak.name{i}};
dsbak = ds;
dszero = dseries(zeros(ds.nobs, ds.vobs), ...
ds.firstdate, ...
ds.name);
for i = 1:ds.vobs
ds = dszero;
ds{dsbak.name{i}} = dsbak{dsbak.name{i}};
rhseval = eval(rhs);
contribution(:, i+1) = rhseval.data;
end
figure('Name', lhs);
plot(1:dseriesdata.nobs, contribution);
seriesnames = dseriesdata.name;
plot(1:ds.nobs, contribution);
seriesnames = ds.name;
legend('All Endogenous', seriesnames{:});
end