跪求MATLAB小程序

点坐标(ai bi) 如下
ai 0.50 1.41 3.00 3.37 3.40 4.72 4.72 5.43 7.57 8.38 8.98 9.50
bi 2.00 3.50 1.50 3.51 5.50 2.00 6.24 4.10 2.01 4.50 3.41 0.80
求任意两点之间的距离

第1个回答  2010-07-10
function forLength
ai=[0.50 1.41 3.00 3.37 3.40 4.72 4.72 5.43 7.57 8.38 8.98 9.50];
bi=[2.00 3.50 1.50 3.51 5.50 2.00 6.24 4.10 2.01 4.50 3.41 0.80];
col=size(ai,2);%记录点的个数;
A=zeros(col,col);
for i=1:col
for j=1:col
A(i,j)=distance(ai(i),bi(i),ai(j),bi(j));
end
end
A

function dist=distance(x1,y1,x2,y2)
dist=sqrt((x1-x2)^2+(y1-y2)^2);

以上保存到一个forLength.m文件中,运行结果:
A =
Columns 1 through 7
0 1.7545 2.5495 3.2430 4.5453 4.2200 5.9821
1.7545 0 2.5550 1.9600 2.8214 3.6340 4.2969
2.5495 2.5550 0 2.0438 4.0200 1.7912 5.0424
3.2430 1.9600 2.0438 0 1.9902 2.0255 3.0456
4.5453 2.8214 4.0200 1.9902 0 3.7406 1.5133
4.2200 3.6340 1.7912 2.0255 3.7406 0 4.2400
5.9821 4.2969 5.0424 3.0456 1.5133 4.2400 0
5.3586 4.0645 3.5588 2.1428 2.4659 2.2168 2.2547
7.0700 6.3376 4.5984 4.4598 5.4377 2.8500 5.1005
8.2671 7.0414 6.1599 5.1069 5.0794 4.4323 4.0526
8.5964 7.5705 6.2776 5.6109 5.9586 4.4873 5.1143
9.0796 8.5287 6.5376 6.7023 7.7006 4.9283 7.2417
Columns 8 through 12
5.3586 7.0700 8.2671 8.5964 9.0796
4.0645 6.3376 7.0414 7.5705 8.5287
3.5588 4.5984 6.1599 6.2776 6.5376
2.1428 4.4598 5.1069 5.6109 6.7023
2.4659 5.4377 5.0794 5.9586 7.7006
2.2168 2.8500 4.4323 4.4873 4.9283
2.2547 5.1005 4.0526 5.1143 7.2417
0 2.9913 2.9770 3.6164 5.2397
2.9913 0 2.6184 1.9870 2.2779
2.9770 2.6184 0 1.2442 3.8658
3.6164 1.9870 1.2442 0 2.6613
5.2397 2.2779 3.8658 2.6613 0
只看右上三角即可,第i行第j列的元素代表原来第i、j两点间距。

参考资料:自己解答

本回答被提问者采纳