20 lines
680 B
Matlab
20 lines
680 B
Matlab
function [N, D] = mergeResults(N1, D1, N2, D2, C1, C2, k, ~)
|
|
% Merge neighbors from two sources for a specific subset of queries
|
|
numQueries = size(N1, 1); % Queries corresponding to N1 (or N2)
|
|
N_combined = [N1, N2 + size(C1, 1)]; % Adjust indices for C2
|
|
D_combined = [D1, D2];
|
|
|
|
% Sort distances and select top-k for each query
|
|
[D_sorted, idx] = sort(D_combined, 2); % Sort by distance for each query
|
|
idx = idx(:, 1:k); % Top-k indices
|
|
|
|
% Select corresponding neighbors
|
|
N = zeros(numQueries, k);
|
|
for i = 1:numQueries
|
|
N(i, :) = N_combined(i, idx(i, :));
|
|
end
|
|
|
|
% Select corresponding distances
|
|
D = D_sorted(:, 1:k);
|
|
end
|