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
 | |
| 
 |