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

Various Octave compatibility issues

Also improve on e42cf2e5 for the compatbilitity
with MATLAB < R2016a in occbin.write_regimes_to_xls.m.
parent 67c205e0
No related branches found
No related tags found
No related merge requests found
......@@ -268,7 +268,12 @@ while is_changed && maxiter>iter && ~is_periodic
qq={regime_history(indx_init_1).regimestart1}';
for j=1:length(qq), start_new(j,1) = {int2str(qq{j})}; end
disp('Time points where regime 1 differs')
if ~isoctave
disp(table(indx_init_1, regime_, start_, regime_new, start_new))
else % The table() function is not implemented in Octave, print something more or less equivalent (though much less readable)
disp(vertcat({'indx_init_1', 'regime_', 'start_', 'regime_new', 'start_new'}, ...
horzcat(num2cell(indx_init_1), regime_, start_, regime_new, start_new)))
end
end
indx_init_2 = find(isdiff_(:,2));
......@@ -286,7 +291,12 @@ while is_changed && maxiter>iter && ~is_periodic
qq={regime_history(indx_init_2).regimestart2}';
for j=1:length(qq), start_new(j,1) = {int2str(qq{j})}; end
disp('Time points where regime 2 differs ')
if ~isoctave
disp(table(indx_init_2, regime_, start_, regime_new, start_new))
else % The table() function is not implemented in Octave, print something more or less equivalent (though much less readable)
disp(vertcat({'indx_init_2', 'regime_', 'start_', 'regime_new', 'start_new'}, ...
horzcat(num2cell(indx_init_2), regime_, start_, regime_new, start_new)))
end
end
else
indx_init_1 = find(isdiff_(:,1));
......@@ -300,7 +310,12 @@ while is_changed && maxiter>iter && ~is_periodic
qq={regime_history(indx_init_1).regimestart}';
for j=1:length(qq), start_new(j,1) = {int2str(qq{j})}; end
disp('Time points where regime differs')
if ~isoctave
disp(table(indx_init_1, regime_, start_, regime_new, start_new))
else % The table() function is not implemented in Octave, print something more or less equivalent (though much less readable)
disp(vertcat({'indx_init_1', 'regime_', 'start_', 'regime_new', 'start_new'}, ...
horzcat(num2cell(indx_init_1), regime_, start_, regime_new, start_new)))
end
end
end
......
......@@ -51,18 +51,20 @@ else
xlsmat{tp,5}=int2str(regime_history(tp).regimestart2);
end
end
if ~ispc && ~isoctave && matlab_ver_less_than('9.0')
% On GNU/Linux and macOS, with MATLAB < R2016a, “writeable” can’t write Excel files
warning('This version of MATLAB is too old and cannot create Excel files. The Occbin regimes will rather be written to a CSV file')
filename=[OutputDirectoryName filesep xls_filename '.csv'];
else
filename=[OutputDirectoryName filesep xls_filename '.xls'];
end
if isfile(filename)
delete(filename)
end
if ~ispc && ~isoctave && matlab_ver_less_than('9.0') % See above
writetable(array2table(xlsmat,'VariableNames',Header), filename);
if isoctave || (~ispc && matlab_ver_less_than('9.0'))
% “writetable” and “array2table” don’t exist under Octave
% On GNU/Linux and macOS, with MATLAB < R2016a, “writeable” can’t write Excel files
if isoctave && ~user_has_octave_forge_package('io')
error('The io package is required to write XLS files from Octave')
end
xlswrite(filename, vertcat(Header, xlsmat));
else
writetable(array2table(xlsmat,'VariableNames',Header), filename, 'Sheet', 'Regimes');
end
......@@ -27,6 +27,9 @@ verbatim;
y = 1+(rand(M_.endo_nbr,1)-.5)*.25;
g = ones(M_.endo_nbr,1);% 1+(rand(M_.endo_nbr,1)-.5)*.1;
[y, fval, exitflag] = fsolve(@ramsey.bgpfun, [y;g], options);
if ~isoctave
% Disable under Octave for the time being, it converges to a solution different
% from the one expected.
assert(max(abs(y(M_.endo_nbr+(1:M_.orig_endo_nbr))-1.02))<1e-6)
end
end;
function output_cell =PC_slope(xparam1,M_,options_,oo_,estim_params_,bayestopt_,dataset_,dataset_info)
function output_cell =Gali_2015_PC_slope(xparam1,M_,options_,oo_,estim_params_,bayestopt_,dataset_,dataset_info)
% output_cell =PC_slope(xparam1,M_,options_,oo_,estim_params_,bayestopt_,dataset_,dataset_info);
% This is an example file computing statistics on the prior/posterior draws. The
% function allows read-only access to all Dynare structures. However, those
......
......@@ -317,7 +317,7 @@ varobs yg inom pi;
datafile=dataobsfile2, mode_file=NKM_mh_mode_saved,
mode_compute=0, nobs=120, first_obs=1,
mh_replic=0, plot_priors=0, smoother,
graph_format=(fig), nodisplay,consider_all_endogenous,heteroskedastic_filter);
nodisplay,consider_all_endogenous,heteroskedastic_filter);
oo0=oo_;
// use inversion filter (note that IF provides smoother together with likelihood)
......@@ -327,7 +327,7 @@ varobs yg inom pi;
datafile=dataobsfile2, mode_file=NKM_mh_mode_saved,
mode_compute=0, nobs=120, first_obs=1,
mh_replic=0, plot_priors=0, smoother,
graph_format=(fig), nodisplay, consider_all_endogenous,heteroskedastic_filter);
nodisplay, consider_all_endogenous,heteroskedastic_filter);
// show initial condition effect of IF
figure,
......
......@@ -318,7 +318,7 @@ varobs yg inom pi;
datafile=dataobsfile2, mode_file=NKM_mh_mode_saved,
mode_compute=0, nobs=120, first_obs=1,
mh_replic=0, plot_priors=0, smoother,
graph_format=(fig), nodisplay,consider_all_endogenous,heteroskedastic_filter);
nodisplay,consider_all_endogenous,heteroskedastic_filter);
oo0=oo_;
......@@ -330,7 +330,7 @@ varobs yg inom pi;
datafile=dataobsfile2, mode_file=NKM_mh_mode_saved,
mode_compute=0, nobs=120, first_obs=1,
mh_replic=0, plot_priors=0, smoother,
graph_format=(fig), nodisplay, consider_all_endogenous,heteroskedastic_filter);
nodisplay, consider_all_endogenous,heteroskedastic_filter);
// show initial condition effect of IF
figure,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment