Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

Select and Save the points that have 3 neighbors exactly 1 unit of distance away.

5 vues (au cours des 30 derniers jours)
James Peach
James Peach le 22 Sep 2020
Clôturé : MATLAB Answer Bot le 20 Août 2021
I am trying to select and save points to an array. I want to get all the points that have 3 points exaclty 1 unit away. I have set up a matrix that contains all the distance values between the points, but I am struggling to get points that meet the criteria. My code below is below. Thanks in advance.
load('A.mat');
x = A(:, 1);
y = A(:, 2);
z = A(:, 3);
SizeofA = size(A,1);
dist1a = nan(numel(x));
proximity = 1;
for i = 1:SizeofA
for j = 1:(i-1)
dist1a(i,j) = sqrt((x(i)-x(j)).^2 + (y(i)-y(j)).^2 + (z(i)-z(j)).^2);
dist1a(j,i) = dist1a(i,j);
end
end
i2keep = min(dist1a) == proximity && histc(dist1a)> 1;
keep_x1 = x(i2keep);
keep_y1 = y(i2keep);
keep_z1 = z(i2keep);
B = [keep_x1, keep_y1, keep_z1];
  1 commentaire
James Peach
James Peach le 23 Sep 2020
Id like to do something along the lines of this but by row instead of all at once.
https://www.mathworks.com/matlabcentral/answers/142281-count-the-number-of-times-a-value-occurs-in-a-specific-of-an-array

Réponses (1)

sushanth govinahallisathyanarayana
You could loop through the points and obtain a distance matrix dist
for i=1:size(A,1)
dist(:,i)=sum((A-A(i,:)).^2)
end
thr=1e-5; % example
dist_th=sum(abs(dist-1)<=thr);
% thresholding distances which are nearly exactly one, and finding the number of points that obey it for each point. The threshold of 1e-5 is so that points which are not exactly one unit away, but are 0.99999 units away will be included.
neighbour_pts=A(dist_th==3,:) % finds points that have 3 such neighbours
Hope this helps.
  1 commentaire
James Peach
James Peach le 23 Sep 2020
I already have a distance matrix but I am trying to use logical statements to grab all the points that have 3 or more 1 values inside the rows.

Cette question est clôturée.

Produits


Version

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by