How to extract only certain points contained in a segment?

4 views (last 30 days)
Hi everyone. I have the following problem. I have segments with a series of point.
For each segment I would like to consider only the point which is closest to a certain obstacle and then I would like to save these points in an n x 2 array where the first column of this array represents the x-coordinates of the points and the second column of the array represents the y-coordinates of the points. How can I do it?

Answers (2)

KSSV on 29 Jun 2022
Read about knnsearch
KSSV on 29 Jun 2022
You can use it n number of times..what is restricting you?

Sign in to comment.

Image Analyst
Image Analyst on 15 Sep 2022
Try this, assuming you have your points in x and y, and your obstacle point is in x0, y0:
distances = sqrt((x - x0) .^ 2 + (y - y0) .^ 2);
[sortedDistances, sortOrder] = sort(distances, 'ascend');
Then you can take however many of the "close" points as you want. Like let's say you want the 9 closest points:
sortedx = x(sortOrder);
sortedy = y(sortOrder);
xClosest = sortedx(1 : 9);
yClosest = sortedy(1 : 9);
Or maybe you just want a list of all distances less than 30:
distances = sqrt((x - x0) .^ 2 + (y - y0) .^ 2);
% Get logical indexes of what points are closer than 30.
closeIndexes = distances < 30;
xClosest = x(closeIndexes);
yClosest = y(closeIndexes);

Community Treasure Hunt

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

Start Hunting!

Translated by