你这个程序有点复杂:可以简化解决,不就是求一个欧氏距离嘛,直接求2-范数(默认)就行了:
代码如下:
clc
clear
a=importdata('kktxt'); %从txt 文件中读取数据存于a中
[m,n]=size(a) %a看来是一个矩阵了,size出它的行数m和列数n
NORM=zeros(m,1); % 有m行,那么需要算m个范数,将存于norm中。
for k=1:m
NORM(k)=norm(a(k,:)); %算每一行的2-范数
end
关键的已经给出,后面的就是去NORM数组中的数据互相做减法然后保存到另外一个数组中就行了。
直接把坐标带进去你采用的距离公式就行了。 最简单的是二维的的欧式距离公式。举个例子吧 a=[1,2]; b=[2,1]; juli=sqrt((a(1)-b(1))^2+(a(2)-b(2))^2);
推荐去看一下K-mean聚类算法。原理相当于一个传教士的故事,有一批传教士n个,分散到一个城市各个区域传教,城市里的每个人到离他最近的一个传教士所在位置去听教。下一次,传教士为了照顾更多的人,会根据上一次到他那里所有人的平均位置,去传教(相当于当前人位置的重心),人们再根据自己的远近,考虑去哪个传教士那。最后稳定下来(收敛到你想要的条件或者次数),各个区域就分好了。
pdist2就可以,比如md1 = pdist2(x,y,'Euclidean');计算两点间的欧氏距离,具体可参考>
A与B输好后:
sa=size(A);
sb=size(B);
d=zeros(sb(1),1);
for i=1:1:sb(1)
Bi=B(i,:);
dtemp(i)=0;
for j=1:1:sa(2)
dj=(A(j)-Bi(j))^2;
dtemp(i)=dtemp(i)+dj;
end
d(i)=sqrt(dtemp(i));
end
d
距离是两个点或者两个对象之间的最短路径叫距离,你只有一个矩阵,你想求谁和谁的距离呢?
两点之间可以用(x1-x2)^2+(y1-y2)^2+(z1-z2)^2, 然后开根号就是两点之间距离,你说的也应该有其中心点。
以上就是关于你好,这是一个求2000行,62列矩阵,每两个行向量之间的欧式距离matlab函数,为什么错误/急,谢谢全部的内容,包括:你好,这是一个求2000行,62列矩阵,每两个行向量之间的欧式距离matlab函数,为什么错误/急,谢谢、有人研究过matlab中的快速计算欧式距离的函数eudist2吗,进来看看、matlab如何用欧式距离对坐标点进行聚类分析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)