Given a matrix of n rows and 2 columns containing the xOy coordinates of n points. Find two points with distance and return the row index of those two points
1 view (last 30 days)
Show older comments
can you help me : Given a matrix of n rows and 2 columns containing the xOy coordinates of n points. Find two points with distance and return the row index of those two points
0 Comments
Answers (1)
DGM
on 7 Sep 2021
Consider:
n = 10; % number of points
d = 7; % distance to match
P = 10*rand(n,2); % example point list
D = sqrt((P(:,1)-P(:,1).').^2 + (P(:,2)-P(:,2).').^2); % distance table from each point to all other points
m = tril(ones(n)); m(m==0) = NaN; % make a triangular mask
Derr = abs(D-d).*m; % calculate error
[Da Na] = min(Derr,[],2); % minimize
[~, Nb] = min(Da,[],1);
% these are the points with distance most closely matching the target
Pa = P(Na(Nb),:)
Pb = P(Nb,:)
% show the distance between Pa,Pb
sqrt((Pa(1)-Pb(1)).^2 + (Pa(2)-Pb(2)).^2)
See Also
Categories
Find more on Fourier Analysis and Filtering 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!