function [nearest]=kdtree_search(data,K)
numDP=size(data.X,1);
P=data.X;
DIM=size(data.X,2);
nearest=zeros(numDP,K);
nsorted=cell(numDP,1);
distance=cell(numDP,DIM);
F=cell(numDP,DIM);
for i=1:numDP
for jg=2:numDP
F{jg}=(P(jg,:)-(P(i,:)));
distance{i}=sqrt(sum(((F{jg}).^2),2)); %THIS LINE
[~,nsorted{i}]=sortrows(distance{i},'ascend');
nearest(i,:)=nsorted{i}(2:K+1)';
While using this code I always get arror in the line that i highlighted bold. It gives size match errror during calculation but i want to do this code faster as it can possible.

댓글 수: 6

Walter Roberson
Walter Roberson 2020년 2월 4일
Please post the complete error message.
Zeynep Naz Kocabas
Zeynep Naz Kocabas 2020년 2월 4일
Ekran Alıntısı.PNG
The error is correct: F{1} is never assigned to.
I notice by the way, that you appear to be using a symmetric distance measurement. That would suggest that you should be using
for i=1:numDP-1
for jg=i+1:numDP
As you are not saving the F values outside of the for jg loop (you would need a 2D cell array for that), I wonder if you even need to save them at all? Are you accessing the F entries after the for jg loop?
I also see
distance=cell(numDP,DIM);
but you are assigning to distance{i} not to a 2D location, and you are overwriting distance{i} every iteration of your for jg loop.
Should I not use
distance=cell(numDP,DIM);
Yes i don't use F after the loop.
And thank you for your help.
function [nearest]=kdtree_search(data,K)
numDP = size(data.X,1);
P = data.X;
nearest = zeros(numDP,K);
distance = zeros(numDP,numDP);
for i=1:numDP
for jg=i+1:numDP
F=(P(jg,:)-(P(i,:)));
distance(i,jg) = sqrt(sum(((F).^2),2));
distance(jg,i) = distance(i,jg); %symmetric
[~,nsorted]=sortrows(distance{i},'ascend');
nearest(i,:)=nsorted(2:K+1)';
end
end
Zeynep Naz Kocabas
Zeynep Naz Kocabas 2020년 2월 9일
Thank you very much.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

도움말 센터File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

태그

질문:

2020년 2월 4일

댓글:

2020년 2월 9일

Community Treasure Hunt

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

Start Hunting!

Translated by