www.pudn.com > trackingdemos.zip > unresolved_demo1.m


% unresolved_demo1.m 
% 
% demo version for N dimensional assignment with possibly unresolved measurements for 
% tracking multiple targets using multiple sensors 
% See also: SD_unresolved_demo.m 
 
% perform the Monte Carlo simulations for algorithm comparison 
%  
% 2-D hard assignment, sensor 1, 2, 1&2 
disp('»'); 
disp('»'); 
disp('% Now begins the Monte Carlo simulations for comparison of different'); 
disp('% data association algorithms'); 
disp('% It is fairly slow. Please be patient ...'); 
disp('pause'); 
pause(5); 
disp('»'); 
disp('»'); 
disp('% 2 dimensional hard assignment, single best, sensor 1'); 
disp('»'); 
disp('»'); 
disp('% Start simulations ...'); 
MCruns = 500; 
track = test_2d_kf1(target, MCruns); 
disp('»'); 
disp('»'); 
disp('% Simulations ended successfully.'); 
disp('»'); 
disp('»'); 
disp('% The track loss is based on the 99% Chi-square region of the NEES'); 
string1 = ['            Percentage of Track 1 losses: ', num2str(track(1).loss/MCruns)]; 
string2 = ['            Percentage of Track 2 losses: ', num2str(track(2).loss/MCruns)]; 
disp('»'); 
disp('»'); 
disp(string1); 
disp(string2); 
disp('% The root mean square error (RMSE) is averaged over those tracks which are lost at the end'); 
fig5 = plot_RMSE(track); 
disp('pause'); 
pause(5); 
close(fig5); 
disp('»'); 
disp('»'); 
disp('% The filter consistency test is not a trivial issue.'); 
disp('% A chi-square test based on NEES is more accurate than counting the number of empty gates'); 
disp('% when one has access to the ground truth.'); 
disp('% However, by including those lost tracks, the NEES is far above the upper limit'); 
disp('% of the 95% chi-square region.'); 
disp('% By excluding the lost tracks, the NEES is often below the lower limit'); 
disp('% of the 95% chi-square region.'); 
disp('% Notice that the track segments when not lost are included in obtaining the NEES.'); 
disp('% The test is slow, but faster than MC runs, please wait ...'); 
fig6 = plot_chi2(track); 
disp('pause'); 
pause(5); 
disp('»'); 
disp('»'); 
close(fig6); 
 
disp('»'); 
disp('»'); 
disp('% 2 dimensional hard assignment, single best, sensor 2'); 
disp('»'); 
disp('»'); 
disp('% Start simulations ...'); 
MCruns = 500; 
track = test_2d_kf2(target, MCruns); 
disp('»'); 
disp('»'); 
disp('% Simulations ended successfully.'); 
disp('»'); 
disp('»'); 
disp('% The track loss is based on the 99% Chi-square region of the NEES'); 
string1 = ['            Percentage of Track 1 losses: ', num2str(track(1).loss/MCruns)]; 
string2 = ['            Percentage of Track 2 losses: ', num2str(track(2).loss/MCruns)]; 
disp('»'); 
disp('»'); 
disp(string1); 
disp(string2); 
disp('% The root mean square error (RMSE) is averaged over those tracks which are lost at the end'); 
fig5 = plot_RMSE(track); 
disp('pause'); 
pause(5); 
close(fig5); 
disp('»'); 
disp('»'); 
disp('% The filter consistency test based on NEES:'); 
fig6 = plot_chi2(track); 
disp('pause'); 
pause(5); 
disp('»'); 
disp('»'); 
close(fig6); 
 
disp('»'); 
disp('»'); 
disp('% 2 dimensional hard assignment, single best, both sensor 1 and sensor 2'); 
disp('»'); 
disp('»'); 
disp('% Start simulations ...'); 
MCruns = 500; 
track = test_2d_kf12(target, MCruns); 
disp('»'); 
disp('»'); 
disp('% Simulations ended successfully.'); 
disp('»'); 
disp('»'); 
disp('% The track loss is based on the 99% Chi-square region of the NEES'); 
string1 = ['            Percentage of Track 1 losses: ', num2str(track(1).loss/MCruns)]; 
string2 = ['            Percentage of Track 2 losses: ', num2str(track(2).loss/MCruns)]; 
disp('»'); 
disp('»'); 
disp(string1); 
disp(string2); 
disp('% The root mean square error (RMSE) is averaged over those tracks which are lost at the end'); 
fig5 = plot_RMSE(track); 
disp('pause'); 
pause(5); 
close(fig5); 
disp('»'); 
disp('»'); 
disp('% The filter consistency test based on NEES'); 
fig6 = plot_chi2(track); 
disp('pause'); 
pause(5); 
disp('»'); 
disp('»'); 
close(fig6); 
% call a new file for MC runs 
unresolved_demo2;