How to extract only certain points contained in a segment?

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?

Réponses (2)

KSSV
KSSV le 29 Juin 2022
Read about knnsearch

2 commentaires

@KSSV yeah I know knnsearch, but I do not want to use it since i have to use it for another intricate application after in the same code. I was hoping for a more immediate solution
You can use it n number of times..what is restricting you?

Connectez-vous pour commenter.

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);

Catégories

En savoir plus sur Develop Apps Using App Designer dans Centre d'aide et File Exchange

Produits

Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by