首页 | 家园 | 百科 | 下载 | 书库 | 仪器 | 展会 |人才 | 公司 | 网址 | 问答 | 论坛 | 注册 | 通行证登录 | English

生物行

生物行   进展 | 摘要 | 人物 | 医药 | 疾病 | 技术 | 健康 | 能源   生物航   供应 | 求购 | 公司 | 展会 | 要发布
论坛   神经科学 | 神经系统疾病 | 实验技术 | 求职招聘 | 器材试剂 | 文献检索 | 读书笔记 | 考试招生 | 软件使用

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

时间:2008-07-08 05:28来源:生物导航网 作者:bioguider 阅读:

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

(责任编辑:泉水)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
推荐内容
  • MATLAB命令大全

    点击浏览该文件 MATLAB 命令大全 管理命令和函数 help 在线帮助文件 doc 装入超文本说...