MATLAB Answers

Computing distance between two set of points (under vectorized approach)

12 views (last 30 days)
SC on 3 Apr 2019
Commented: madhan ravi on 3 Apr 2019
I have two matrices (two set of p-dimensional points), X1 and X2, which are n*p and m*p matrices. I want the final output Dist, whose i-j entries is the distance between row_i of X1 and row_j of X2 (i.e. inner product of the difference).
I want to do this in the vectorization way (avoid using for loop), since the actual matrix size is very big.
For p=2, the following can do the job (X1 is named as XY1 and X2 is named as XY2 in the example, since the dimension is 2 only):-
How can I do that, say for p=10? Many thanks!
function Dist=dist_matrix(XY1,XY2)
% input: both XY1 and XY2 have 2 columns
% input: XY1 and XY2 are not necessarily having same number of rows
f = @(hori,verti)(hori-verti);
Dist_X = bsxfun(f,X2',X1);
Dist_Y = bsxfun(f,Y2',Y1);


madhan ravi
madhan ravi on 3 Apr 2019
You can do the arithmetic operations directly since your using 2016b version no need to use bsxfun().
SC on 3 Apr 2019
Thanks for your reply. But what's your exact meaning? For example, how to do the arithmetic operations directly for the below example?
A = [8; 17; 20; 24];
B = [0 10 21];

Sign in to comment.

Answers (0)

Translated by