编写matlab程序根据欧几里得距离公式计算两个向量间的欧几里得距离

编写matlab程序根据欧几里得距离公式计算两个向量间的欧几里得距离,第1张

function dis = myEulidean(A,B) 

   [ax,ay]=size(A)

   [bx,by]=size(B)

   if (ax>1 && ay>1)||(bx>1 && by >1)

       error('输入中存在非向量')

   elseif (ax>ay) && (bx<by)

       temp=bx

       bx=by

       by=temp

       if (ax~=bx)||(ay~=by)

           error('向量长度不统一')

       end

   elseif (ax~=bx)||(ay~=by)

       error('向量长度不统一')

   end

   dis=0

   for i=1:max(ax,ay)

       dis=dis+(A(i)-B(i))^2

   end

   dis=sqrt(dis)

end

你这个程序有点复杂:可以简化解决,不就是求一个欧氏距离嘛,直接求2-范数(默认)就行了:

代码如下:

clc

clear

a=importdata('kk.txt')

%从*.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数组中的数据互相做减法然后保存到另外一个数组中就行了。


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

原文地址: http://outofmemory.cn/yw/8133756.html

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

发表评论

登录后才能评论

评论列表(0条)

保存