Here’s how to **calculate the L2 Euclidean distance between points in MATLAB**.

The whole kicker is **you can simply use the built-in MATLAB function, pdist2(p1, p2, ‘euclidean’)** and be done with it. *p1* is a matrix of points and *p2* is another matrix of points (or they can be a single point).

However, initially I wasn’t really clear about what was going on. So if you are still a bit confused, let’s chat about it…

The scenario: **You have one point**, *aPoint*, that you wish to **compare against a bunch of other points** *bunchOfPoints*. For simplicity, let’s work in two-dimensional (2D) space. Note that 2D means each point is composed of two pieces of information (i.e. has 2 components).

We start by **defining our points**, then we **calculate the L2 distance by hand**, then we use the **built-in pdist2() function** to show we get the same result. And then finally, as a little bonus, we show how to get the **minimum L2 Euclidean distance** at the end.

Here’s how to calculate the equation by hand if you’re interested.

http://en.wikipedia.org/wiki/Norm_%28mathematics%29#Euclidean_norm

% disL2 % Define our points. aPoint = [1,4]; % A single point with 2 components. bunchOfPoints = [2,3; 1,4; 0,1]; % A bunch of other points. % Make 'aPoint' the same size as a 'bunchOfPoints'. aPointMatrix = repmat(aPoint,size(bunchOfPoints,1),1); % Calculate by hand. %% L2 Euclidean Norm. % http://en.wikipedia.org/wiki/Norm_%28mathematics%29#Euclidean_norm % 1) Take the difference between the two -> aPointMatrix-bunchOfPoints % 2) Square the difference to get rid of positive/negative: % (aPointMatrix-bunchOfPoints).^2 % 3) Sum this up along the rows. % (sum(((aPointMatrix-bunchOfPoints).^2), 2)) % 4) Take the square root of this. % (sum(((aPointMatrix-bunchOfPoints).^2), 2)).^0.5 pointsDifSquare = (sum(((aPointMatrix-bunchOfPoints).^2), 2)).^0.5 % output = 1.4142 0 3.1623 %% Or we can just use this handy built-in function... d = pdist2(aPoint,bunchOfPoints,'euclidean') % same output! = 1.4142 0 3.1623 %% Bonus, how to find the min distance! [theMinDistance, indexOftheMinDistance] = min(d) % Yeah! As expected theMinDistance = 0 and indexOftheMinDistance = 2. |