number of nearest neighbous around each element of a matrix

조회 수: 1 (최근 30일)
jack
jack 2014년 5월 18일
댓글: jack 2014년 5월 19일
I have a matrix that contain coordinates I=[x y z]. I need to find the number of nearest neighbors for each point in the matrix within a radius R. Thanks a lot!
Jack,

채택된 답변

Image Analyst
Image Analyst 2014년 5월 18일
How about just a brute force approach (though slightly vectorized):
% Set up / initialize.
numberOfCoordinates = 100;
m = rand(numberOfCoordinates, 3); % Don't us I because I is a bad name.
radius = 0.5;
% Check each point for others within radius.
for row = 1 : numberOfCoordinates
% Get the distance of every point to this point.
distances = sqrt((m(row,1) - m(:, 1)).^2 + ...
(m(row, 2) - m(:, 2)).^2 + ...
(m(row, 3) - m(:, 3)).^2);
% Count the number of points that are
% greater than 0 (to exclude this point itself)
% but less than or equal to the radius.
counts(row) = sum(distances > 0 & distances <= radius);
end
% Report to the command line the counts:
counts

추가 답변 (1개)

Youssef  Khmou
Youssef Khmou 2014년 5월 18일
편집: Youssef Khmou 2014년 5월 18일
This problem can be solved using the equation of radius in three dimensional space such as if x²+y²+z² < R² then the point is inside the sphere, let us elaborate an example :
M=randn(300,3);
R=0.5;
for n=1:300
if sqrt((M(n,1)^2)+(M(n,2)^2)+(M(n,3)^2))<= R
C(n,:)=M(n,:);
end
end

카테고리

Help CenterFile Exchange에서 Statistics and Machine Learning Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by