bioguider.com - 生物导航网

在线投稿 投稿指南 RSS订阅 邮件订阅 资讯通告:2008年网站全面更新,新设想新飞越!

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

更新:2008-7-8 来源:生物导航网 作者:佚名 【

有很多组数据,编写一个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

Tags: 如何用MATLAB计算任意两点间的距离  
点击: 编辑:bioguider
发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】   
  • 上一篇文章:
  •  
  • 下一篇文章: 没有了
  • 数据载入中,请稍后……
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 会员登录 - 帮助