How to extract points from a 3D plot that fall within a particular distance from the center coordinate?

4 Ansichten (letzte 30 Tage)
Hello, I am a novice in matlab programmming. I am working on a computational project where I have a 3dimensional plot with thousands of points. Now I would like to fix one point having coordinate (x,y,z). At a particular distance r as a cutoff from (x,y,z), I would like to extract all the points in the plot that fall within the distance (or radius) r. I am not sure of how i can use euclidean distance formula for this. Please help me out.
Thanks in advance.

Akzeptierte Antwort

Wan Ji
Wan Ji am 18 Aug. 2021
Bearbeitet: Wan Ji am 18 Aug. 2021
If you have Coor is a n by 3 matrix as the coordinates of n points in 3d space and a fixed point (x,y,z). Then the points within the distance r can be obtained by
p = sqrt((Coor(:,1)-x).^2 + (Coor(:,2)-y).^2 + (Coor(:,3)-z).^2)<r;
Coor_withindistance_r = Coor(p,:);
  4 Kommentare
Wan Ji
Wan Ji am 18 Aug. 2021
Bearbeitet: Wan Ji am 18 Aug. 2021
function [coor_num, neighbors_with_r] = Coordinates(X,Y,Z,Coor)
r = 1:10;
coor_num = zeros(length(r),1);
neighbors_with_r = cell(length(r),1);
for i = 1:1:length(r)
p = sqrt((Coor(:,1)-X).^2 + (Coor(:,2)-Y).^2 + (Coor(:,3)-Z).^2)<r(i);
Coor_withindistance_r = Coor(p,:);
coor_num(i) = size(Coor_withindistance_r, 1);
neighbors_with_r{i,1} = Coor_withindistance_r;
end
end
This may work, it returns the numbers of coordinates with different distance r (an array), and returns their coordinates. @sai sai

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Turlough Hughes
Turlough Hughes am 18 Aug. 2021
Bearbeitet: Turlough Hughes am 18 Aug. 2021
The points which are within a radius, r, from the origin can be obtained as follows:
index = sum(X.^2,2) < r^2; % X is an n by 3 array of points
Xthresh = X(index,:);
Note, squaring r is more efficient than taking the square root for ALL of the points in X.
For a starting point other than the origin, e.g. p (1 by 3), points in X within a threshold radius r from the point p can be obtained as follows:
index = sum(X.^2 - p,2) < r^2;
Xthresh = X(index,:);

Kategorien

Mehr zu Graphics Performance finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by