get the distances between points
4 次查看(过去 30 天)
显示 更早的评论
Hi,
I have multiple coordinates points which I want to get the minimum distance between point 1 to nearest other point and so on and if the distance not in the range of 55 to 85 exclude that point from cluster. I tried pdist and pdist2 and it gave me the distance from point 1 to others I don't know how to include only the desired distance which is only between 55 to 85
I attached the mat file for the coordinate points
Thanks for helping
0 个评论
采纳的回答
Akira Agata
2021-9-11
How about the following solution?
load('xy_coordinate.mat');
% Calculate distance between each node
D = pdist(xy);
% Convert variable D into square form
Z = squareform(D);
% Extract edges having length of 55~85
idx = Z >= 55 & Z <= 85;
Z(~idx) = 0;
% Convert it into graph object
G = graph(Z);
% Visualize the result
figure
plot(G,'EdgeLabel',G.Edges.Weight)
5 个评论
Akira Agata
2021-9-16
OK. Then, it's a piece of cake!
Please check the degree of each nodes and extract the nodes where degree >= 2.
Here is an example:
load('xy_corr.mat');
% Calculate distance between each node
D = pdist(xy);
% Convert variable D into square form
Z = squareform(D);
% Identify edges having distance of [55, 85]
idx = Z >= 55 & Z <= 85;
Z(~idx) = 0;
% Convert it into graph object
G = graph(Z);
% Check degree of graph nodes
d = degree(G);
% Find the node with degree of >= 2
idx = d >= 2;
disp(find(idx))
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graph and Network Algorithms 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!