function ImgList = merge_files(file1, file2) f1 = load(file1); ImgList_file1 = f1.ImgList; f2 = load(file2); ImgList_file2 = f2.ImgList; PV_topN = 10; n1 = 0; n2 = 0; ImgList = struct('queryname', {}, 'topNname', {}, 'topNscore', {}, 'P', {}); for ii = 1:1:length(ImgList_file1) ImgList(ii).queryname = ImgList_file1(ii).queryname; sum_scores = containers.Map('KeyType', 'char', 'ValueType', 'double'); for jj = 1 : PV_topN name = char(ImgList_file1(ii).topNname(jj)); if isKey(sum_scores, name) sum_scores(name) = sum_scores(name) + ImgList_file1(ii).topNscore(jj); else sum_scores(name) = ImgList_file1(ii).topNscore(jj); end name = char(ImgList_file2(ii).topNname(jj)); if isKey(sum_scores, name) sum_scores(name) = sum_scores(name) + ImgList_file2(ii).topNscore(jj); else sum_scores(name) = ImgList_file2(ii).topNscore(jj); end end max_score = 0; img_name = 0; for key = keys(sum_scores) if sum_scores(char(key)) > max_score max_score = sum_scores(char(key)); img_name = key; end end id_dense = 0; id_sparse = 0; for jj = 1 : PV_topN if strcmp(char(ImgList_file1(ii).topNname(jj)), img_name) id_dense = jj; end if strcmp(char(ImgList_file2(ii).topNname(jj)), img_name) id_sparse = jj; end end if id_sparse == 0 n1 = n1 + 1; ImgList(ii).topNscore = [ImgList_file1(ii).topNscore(id_dense)]; ImgList(ii).topNname = [ImgList_file1(ii).topNname(id_dense)]; ImgList(ii).P = [ImgList_file1(ii).P(id_dense)]; continue end if id_dense == 0 n2 = n2 + 1; ImgList(ii).topNscore = [ImgList_file2(ii).topNscore(id_sparse)]; ImgList(ii).topNname = [ImgList_file2(ii).topNname(id_sparse)]; ImgList(ii).P = [ImgList_file2(ii).P(id_sparse)]; continue end max_score = 0; if ImgList_file1(ii).topNscore(id_dense) > ImgList_file2(ii).topNscore(id_sparse) n1 = n1 + 1; ImgList(ii).topNscore = [ImgList_file1(ii).topNscore(id_dense)]; ImgList(ii).topNname = [ImgList_file1(ii).topNname(id_dense)]; ImgList(ii).P = [ImgList_file1(ii).P(id_dense)]; else n2 = n2 + 1; ImgList(ii).topNscore = [ImgList_file2(ii).topNscore(id_sparse)]; ImgList(ii).topNname = [ImgList_file2(ii).topNname(id_sparse)]; ImgList(ii).P = [ImgList_file2(ii).P(id_sparse)]; end end fprintf(1, "%d file 1 poses & %d file 2 poses selected\n", n1, n2); end