Error on Matlab coder
이전 댓글 표시
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
2020년 2월 4일
Please post the complete error message.
Zeynep Naz Kocabas
2020년 2월 4일
Walter Roberson
2020년 2월 4일
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.
Zeynep Naz Kocabas
2020년 2월 5일
Walter Roberson
2020년 2월 6일
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
2020년 2월 9일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
