get the distances between points
조회 수: 1 (최근 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에서 Data Import and Network Parameters에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!