24 lines
		
	
	
		
			536 B
		
	
	
	
		
			Matlab
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			536 B
		
	
	
	
		
			Matlab
		
	
	
	
	
	
| function [D2] = dist2(X, Y)
 | |
| % Calculates the squares of the distances of X and Y
 | |
| %
 | |
| % X: A Mxd array with m d-dimentional points
 | |
| % Y: A Nxd array with n d-dimentional points
 | |
| % d: Must be the same
 | |
| %
 | |
| % D2: The MxN matrix with the distances
 | |
| %
 | |
|     [~, d1] = size(X);
 | |
|     [~, d2] = size(Y);
 | |
|     if d1 ~= d2
 | |
|         error('X,Y column dimensions must match');
 | |
|     end
 | |
|     % debug
 | |
|     %X_norm = sum(X.^2, 2);
 | |
|     %Y_norm = sum(Y.^2, 2)';
 | |
|     %XY = 2 * X*Y';
 | |
|     D2 = max(sum(X.^2, 2) - 2 * X*Y' + sum(Y.^2, 2)', 0);
 | |
|     D2 = sqrt(D2);
 | |
|     
 | |
| end
 | |
| 
 |