How to draw a perfect circle and distance calculation
이전 댓글 표시
Hi,
I got 2 issues:
- to draw a perfect circle
- to calculate a perfect distance
This is my code:
load fisheriris
rng(1); % For reproducibility
n = size(meas,1);
idx = randsample(n,1)
X = meas(~ismember(1:n,idx),3:4); % Training data
Y = meas(idx,3:4)
MdlKDT = KDTreeSearcher(X) % not used by mahanalobis
MdlES = ExhaustiveSearcher(X) % Prepare an exhaustive nearest neighbors searcher.
r = 0.3; % Search radius
IdxKDT = rangesearch(MdlKDT,Y,r)
IdxES = rangesearch(MdlES,Y,r)
[IdxKDT IdxES]
cellfun(@isequal,IdxKDT,IdxES)
figure;
plot(X(:,1),X(:,2),'.k');
hold on;
plot(Y(:,1),Y(:,2),'*r');
Mdl = KDTreeSearcher(X)
[n,d] = knnsearch(Mdl,Y,'k',10);
ctr = Y - d(end);
diameter = 2*d(end);
% Draw a circle around the 10 nearest neighbors.
h = rectangle('position',[ctr,diameter,diameter],...
'curvature',[1 1]);
h.LineStyle = ':';
If i used the fisheriris data, it is works well. But if i'm using Faithful Geyser data (the data as in the attachment), the circle becomes weird. The distance calculation as shown in second picture with yellow color also effected where the data points do not lie within a circle.. This is the code to apply the faithful data:
faithfuldat = xlsread('faithful.csv');
fData = faithfuldat(:,:);
[n,dim]=size(fData);
idx = randsample(n,1)
X = fData(~ismember(1:n,idx),:); % Training data
Y = fData(idx,:)
The distance code i used from this link: https://stackoverflow.com/questions/27475978/finding-k-nearest-neighbors-and-its-implementation/27476929#27476929


I really appreciate if anyone could advice me how to improve the circle and distance.
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Get Started with Statistics and Machine Learning Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


