你好,这是一个求2000行,62列矩阵,每两个行向量之间的欧式距离matlab函数,为什么错误急,谢谢

你好,这是一个求2000行,62列矩阵,每两个行向量之间的欧式距离matlab函数,为什么错误急,谢谢,第1张

你这个程序有点复杂:可以简化解决,不就是求一个欧氏距离嘛,直接求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如何用欧式距离对坐标点进行聚类分析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9691410.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存