diff --git a/matlab/+mom/check_irf_matching_file.m b/matlab/+mom/check_irf_matching_file.m new file mode 100644 index 0000000000000000000000000000000000000000..70eb5b37a662cebe94ed8f25c969caab77a28e51 --- /dev/null +++ b/matlab/+mom/check_irf_matching_file.m @@ -0,0 +1,57 @@ +function [irf_matching_file_name, irf_matching_file_path] = check_irf_matching_file(irf_matching_file) +% [irf_matching_file_name, irf_matching_file_path] = check_irf_matching_file(irf_matching_file) +% ------------------------------------------------------------------------- +% Check if the provided irf_matching_file is a valid MATLAB function with +% .m extension and return name, path and extension of the file. +% ------------------------------------------------------------------------- +% INPUTS +% - irf_matching_file: [string] user provided name (with possible path and extension) +% of the MATLAB function that transforms model irfs +% ------------------------------------------------------------------------- +% OUTPUTS +% - irf_matching_file_name: [string] name of the MATLAB function (without extension) +% - irf_matching_file_path: [string] path to irf_matching_file_name +% ------------------------------------------------------------------------- +% This function is called by +% - mom.run +% ------------------------------------------------------------------------- + +% Copyright © 2023 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 <https://www.gnu.org/licenses/>. + + +if isempty(irf_matching_file) + % no irf_matching_file provided, so no transformations will be done + irf_matching_file_name = ''; + irf_matching_file_path = ''; +else + [irf_matching_file_path, irf_matching_file_name, irf_matching_file_ext] = fileparts(irf_matching_file); + % make sure file is a MATLAB function with .m extension + if ~strcmp(irf_matching_file_ext,'.m') + if strcmp(irf_matching_file_ext,'') + irf_matching_file_ext = '.m'; + else + error('method_of_moments: ''irf_matching_file'' needs to point towards a MATLAB function with extension ''.m''!'); + end + end + if isempty(irf_matching_file_path) + irf_matching_file_path = '.'; + end + if exist([irf_matching_file_path filesep irf_matching_file_name irf_matching_file_ext],'file') ~= 2 + error('method_of_moments: Could not find a ''irf_matching_file'' called ''%s''!',[irf_matching_file_path filesep irf_matching_file_name irf_matching_file_ext]); + end +end \ No newline at end of file