How to find k nearest vectors from a given vector in 3 dimensions ?
조회 수: 2 (최근 30일)
이전 댓글 표시
I have a reference vector and I want to find a fixed k nearest neighbors from a matrix ? How can I do it? Is there any direct way?
댓글 수: 1
Walter Roberson
2015년 5월 16일
When you say "reference vector", do you mean a line defined in N-dimensional space? And you want to find the k points that lie nearest to the line using Euclidean distance? Or does "reference vector" just mean an N-dimensional point and you want to find its k nearest neighbours using a distance measure you have not specified, possibly Euclidean distance?
채택된 답변
Star Strider
2015년 5월 16일
편집: Star Strider
2015년 5월 16일
This is one way:
V = randi(50, 1, 3); % Vector
M = randi(50, 15, 3); % Matrix
%
dif = bsxfun(@minus, V, M); % Subtract Vector from Matrix
D = sqrt(sum(dif.^2,2)); % Euclidean Distance Metric
[Ds,Ix] = sort(D,'ascend'); % Sort Ascending
k = 5; % Number Of Neighbours
KNN = M(Ix(1:k),:); % K-th Nearest Neighbours
This simply finds them. If you have the Statistics Toolbox, the pdist2 function is likely more efficient.
댓글 수: 0
추가 답변 (1개)
Walter Roberson
2015년 5월 16일
Let Q1 and Q2 be any two distinct points of the line and P the point in question, then
d = norm(cross(Q2-Q1,P-Q1))/norm(Q2-Q1);
will give the requested orthogonal distance.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File 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!