109 lines
2.6 KiB
Matlab
109 lines
2.6 KiB
Matlab
debug = true;
|
|
|
|
if debug
|
|
source_dir = fileparts(mfilename('fullpath'));
|
|
source_dir = sprintf('%s/../../../', source_dir)
|
|
else
|
|
source_dir = getenv('source_root');
|
|
end
|
|
|
|
mex_path = [source_dir filesep 'build-matlab'];
|
|
addpath(mex_path);
|
|
which kalman_filter
|
|
kalman_filter_mex = @kalman_filter;
|
|
rmpath(mex_path);
|
|
|
|
matlab_path = [source_dir filesep 'matlab' filesep 'kalman' filesep 'likelihood'];
|
|
addpath(matlab_path);
|
|
which kalman_filter
|
|
kalman_filter_matlab = @kalman_filter;
|
|
rmpath(matlab_path);
|
|
|
|
addpath([source_dir filesep 'matlab']);
|
|
|
|
dynare_config;
|
|
|
|
addpath([source_dir filesep 'tests' filesep 'kalman' filesep 'likelihood']);
|
|
|
|
testFailed = 0;
|
|
|
|
if ~debug
|
|
skipline()
|
|
disp('*** TESTING: test_kalman_mex.m ***');
|
|
end
|
|
|
|
t0 = clock;
|
|
|
|
dprintf('Test 1: No measurement error')
|
|
|
|
Experience.Number0fObservedVariables = 10;
|
|
Experience.SizeOfTheStateVector = 100;
|
|
Experience.NumberOfStructuralShocks = 12;
|
|
Experience.MeasurementErrors = 0;
|
|
Experience.NumberOfPeriods = 300;
|
|
Experience.kalman_filter_matlab = kalman_filter_matlab;
|
|
Experience.kalman_filter_mex = kalman_filter_mex;
|
|
|
|
try
|
|
flag = compare_kalman_mex(Experience);
|
|
if (flag)
|
|
testFailed = testFailed+1;
|
|
if debug
|
|
dprintf('MEX and MATLAB Kalman filters lead to different results')
|
|
end
|
|
end
|
|
catch
|
|
testFailed = testFailed+1;
|
|
if debug
|
|
dprintf('Comparison between MEX and MATLAB Kalman filters failed')
|
|
end
|
|
end
|
|
|
|
dprintf('Test 2: measurement error with diagonal variance-covariance matrix')
|
|
Experience.MeasurementErrors = 1;
|
|
|
|
try
|
|
flag = compare_kalman_mex(Experience);
|
|
if (flag)
|
|
testFailed = testFailed+1;
|
|
if debug
|
|
dprintf('MEX and MATLAB Kalman filters lead to different results')
|
|
end
|
|
end
|
|
catch
|
|
testFailed = testFailed+1;
|
|
if debug
|
|
dprintf('Comparison between MEX and MATLAB Kalman filters failed')
|
|
end
|
|
end
|
|
|
|
dprintf('Test 3: measurement error with general variance-covariance matrix')
|
|
Experience.Number0fObservedVariables = 50;
|
|
Experience.SizeOfTheStateVector = 70;
|
|
Experience.NumberOfStructuralShocks = 50;
|
|
Experience.MeasurementErrors = 2;
|
|
Experience.NumberOfPeriods = 300;
|
|
|
|
try
|
|
flag = compare_kalman_mex(Experience);
|
|
if (flag)
|
|
testFailed = testFailed+1;
|
|
if debug
|
|
dprintf('MEX and MATLAB Kalman filters lead to different results')
|
|
end
|
|
end
|
|
catch
|
|
testFailed = testFailed+1;
|
|
if debug
|
|
dprintf('Comparison between MEX and MATLAB Kalman filters failed')
|
|
end
|
|
end
|
|
|
|
t1 = clock;
|
|
|
|
fprintf('\n*** Elapsed time (in seconds): %.1f\n\n', etime(t1, t0));
|
|
|
|
if ~debug
|
|
quit(testFailed > 0)
|
|
end
|