Supports: - HDF5 file load and store - Precision timing of the process to stdout - logging (verbose mode) to stdout - Command line arguments and help
29 lines
1017 B
Matlab
29 lines
1017 B
Matlab
function [idx, dst] = knnsearch2(C, Q, k)
|
|
% C: Is a MxD matrix (Corpus)
|
|
% Q: Is a NxD matrix (Query)
|
|
% k: The number of nearest neighbors needded
|
|
% idx: Is the Nxk matrix with the k indexes of the C points, that are
|
|
% neighbors of the nth point of Q
|
|
% dst: Is the Nxk matrix with the k distances to the C points of the nth
|
|
% point of Q
|
|
%
|
|
% Calculate the distance matrix between C and Q
|
|
% D is an m x n matrix where each element D(i, j) is the distance
|
|
% between the i-th point in C and the j-th point in Q.
|
|
% k is the number of nearest neighbors to find.
|
|
D = dist2(C, Q);
|
|
|
|
% Find the k-nearest neighbors for each query point in Q
|
|
% [~,n] = size(D);
|
|
% for j = 1:n
|
|
% [dst(:, j), idx(:, j)] = mink(D(:, j), k);
|
|
% end
|
|
[dst, idx] = mink(D, k, 1); % mink along dimension 1 for each query point
|
|
|
|
% Transpose the output to match the knnsearch format
|
|
idx = idx'; % Make idx an n x k matrix
|
|
dst = dst'; % Make dst an n x k matrix
|
|
|
|
end
|
|
|