当前位置: 主页 > 生物技术 > 软件与科研工具 > 生信分析与编程

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

2008-07-08 05:28 bioguider 生物导航网 阅读 0
核心摘要: 有很多组数据 编写一个matlab的循环小程序 用来计算任意两点间的距离 ShapeX X 1 end 2 ShapeY X end 2+1 end N 30 for i 1 N for j 1 N

有很多组数据,编写一个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:
    发表评论