function jndx = subset() % Copyright © 2006-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 options_ estim_params_ M_ ExcludedParamNames = options_.ExcludedParams; info = options_.ParamSubSet; nvx = estim_params_.nvx; nvn = estim_params_.nvn; ncx = estim_params_.ncx; ncn = estim_params_.ncn; np = estim_params_.np; nx = nvx+nvn+ncx+ncn+np; if strcmpi(info,'All') indx = (1:nx)'; elseif strcmpi(info,'DeepParameters') indx = (nvx+nvn+ncx+ncn+1:nx)'; elseif strcmpi(info,'StructuralShocks') indx = [(1:nvx),nvx+nvn+1:nvx+nvn+ncx]'; elseif strcmpi(info,'StructuralShocksWithoutCorrelations') indx = (1:nvx)'; elseif strcmpi(info,'MeasurementErrors') indx = [(nvx+1:nvx+nvn),(nvx+nvn+ncx+1:nvx+nvn+ncx+ncn)]'; elseif strcmpi(info,'MeasurementErrorsWithoutCorrelations') indx = (nvx+1:nvx+nvn)'; elseif strcmpi(info,'AllWithoutMeasurementErrors') indx = [(1:nvx),nvx+nvn+1:nvx+nvn+ncx,nvx+nvn+ncx+ncn+1:nx]'; elseif strcmpi(info,'None') indx = []; end if isempty(ExcludedParamNames) jndx = indx; else tt = []; for i = 1:length(ExcludedParamNames) tmp = strmatch(ExcludedParamNames{i},M_.exo_names); if ~isempty(tmp) && ( strcmpi(info,'All') || strcmpi(info,'StructuralShocks') || ... strcmpi(info,'StructuralShocksWithoutCorrelations') || ... strcmpi(info,'AllWithoutMeasurementErrors') ) % The parameter the user wants to exclude is related to the size of the structural innovations. if ncx disp(['I cannot exclude some of the structural variances if the']) disp(['structural innovations are correlated...']) error end tt = [tt;tmp]; elseif isempty(tmp) && nvn tmp = strmatch(ExcludedParamNames{i},options_.varobs); if ~isempty(tmp) && ( strcmpi(info,'All') || strcmpi(info,'MeasurementErrors') || ... strcmpi(info,'MeasurementErrorsWithoutCorrelations') ) % The parameter the user wants to exclude is related to the size of the measurement errors variances. tmp = nvx+tmp; if ncn disp(['I cannot exclude some the measurement error variances if the']) disp(['measurement errors are correlated...']) error end tt = [tt;tmp]; end else% Excluded parameters are deep parameters... tmp = strmatch(ExcludedParamNames{i}, M_.param_names(estim_params_.param_vals(:,1)),'exact'); if ~isempty(tmp) tt = [tt;nvx+nvn+ncx+ncn+tmp]; else disp('The parameter you want to exclude is unknown!') error end end end jndx = []; for i=1:length(indx) if ~any(indx(i)==tt) jndx = [ jndx ; indx(i) ]; end end end