matlab求五个已知点中距离最近的两个点,并标记出来

或者已知一个点的坐标,求其余点中与它距离最近的点,并标记出来

%% 随机产生N个点
N = 5;
A = randint(N,2,[1 20]);
for p = 1:N
    x = A(p,1);
    y = A(p,2);
    plot(x,y,'o');
    hold on
    text(x+0.5,y+0.5,num2str(p));
end
axis([0 30 0 30]);
axis equal
grid on
dd = pdist(A)';
mind = min(dd);
id = find(dd==mind);
ppp = [nchoosek(1:N,2) pdist(A)'];
for p = 1:length(id)
    k = id(p);
    ppp(k,:)
    x1 = A(ppp(k,1),1);
    y1 = A(ppp(k,1),2);
    x2 = A(ppp(k,2),1);
    y2 = A(ppp(k,2),2);
    plot(x1,y1,'ro');
    plot(x2,y2,'ro');
    line([x1 x2],[y1 y2]);
    text(x1+1,y1-1,['mind = ' num2str(dd(k))]);
end
hold off

追问

如果是这样的五个点呢,上一步得到了他们的坐标(plot_y(i),plot_x(i)),十分感谢!

追答A = [plot_x(:),plot_y(:)];
...

温馨提示:答案为网友推荐,仅供参考