我们热爱生命科学!-生物行

如何用MATLAB计算任意两点间的距离

时间:2008-07-08 05:28来源:生物导航网 作者:bioguider 点击: 5360次

有很多组数据,编写一个matlab的循环小程序,用来计算任意两点间的距离:

ShapeX=X(1:end/2);
ShapeY=X(end/2+1:end);
N=30
for i=1:N
for j=1:N
Distance(i,j)=sqrt((ShapeX(i)-ShapeX(j))^2+(ShapeY(i)-ShapeY(j))^2);



end
end
D = max(max(Distance ))
这样D就可以得到了

如果数据量很大的情况,使用循环就会比较慢。我的方法是不用循环。程序如下,可以运行。
ShapeX = [260.0563 252.6130 243.2607];
ShapeY = [331.5828 338.5321 344.2020];

%从所有的数据中任意选取两个点
ii=nchoosek(1:length(ShapeX),2);
xx=ShapeX(ii);
yy=ShapeY(ii);

%计算任意两点之间的距离。
cc=sqrt(((yy(:,2)-yy(:,1)).^2) + (xx(:,2)-xx(:,1)).^2);
%从距离中选取最大的,实际上你可以从cc中对任意两点的距离做很多统计。
result=max(max(cc));

%寻找有最大距离的点对,注意,有可能有多个成对的点有最大距离。
pointx = [xx(find(cc == result),1),xx(find(cc == result),2)];
pointy = [yy(find(cc == result),1),yy(find(cc == result),2)];

结果是
result =

21.0080


pointx =

260.0563 243.2607


pointy =

331.5828 344.2020

(责任编辑:泉水)
顶一下
(36)
90%
踩一下
(4)
10%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片