# Find closest values in an array of x and y coordinated compared to a given set of coordinates

26 views (last 30 days)
Christina on 15 Jun 2015
Commented: dpb on 15 Jun 2015
Hello all,
I've got two vectors of coordinates
x = linspace(400000,500000,100) and
y = linspace(100000,200000,100)
*********
I've got the given coordinates of a point
x_coord= 406000 and y_coord = 170000 and I'd like to find the position/index of the BOTH vectors x and y that are CLOSER to the given coordinate point.
********
I need an index that would fulfill BOTH the nearest values of x and y and at the end I'd get only one index, not two different indices for vectors x and y.
I know that if I had just one vector, I could use the commands:
[c_x index_x] = min(abs(x_coord-x));
[c_y index_y] = min(abs(y_coord-y));
But I don't need that now.
**********
Any thoughts on that?
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Answers (2)

Christina on 15 Jun 2015
Actually I found the solution:
I created a table with the x and y coordinates:
The small code is:
*********
table[x y];
[d,p] = min((table(:,1)-x_coord).^2 + (table(:,2)-y_coord).^2);
**************
and p gives the index in 'table' matrix that meets the condition of getting the minimum distance between the point (x_coord,y_coord) and both x and y vectors
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

dpb on 15 Jun 2015
See
doc pdist2
##### 2 CommentsShowHide 1 older comment
dpb on 15 Jun 2015
Rows in {X,Y} to pdist2 are observations so
[dmin,imin]=pdist2([x y],[x0 y0],'euclidean','smallest',1);
is the result the same as your other solution. Not sure which is quicker...

Sign in to comment.

### Categories

Find more on Annotations in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!