首页 > 编程知识 正文

matlab求欧几里得距离,matlab 距离

时间:2023-05-06 11:40:44 阅读:221590 作者:4548

常见距离公式的MATLAB代码(一)

大家好! 最近在研究小样本聚类,作为一个初学者,首先肯定是学习一下它的预备知识距离公式啦~在了解了各种距离公式的定义之后,想要看下它们的代码是怎么写的,但是网上大多都是dist表示的代码,于是准备自己动手写一下。根据这些天整理的笔记,总结如下:
(当然有些地方可能写的不太对,希望能和大家共同探讨:))

1、xjhn距离(Euclidean Distance)

*也称欧式距离。
*我们小学、初中和高中接触到的两个点在空间中的距离一般都是指mydhj距离。
*在一个N维度的空间里,求两个点的距离,这个距离肯定是一个大于零的数字,那么这个距离需要用两个点在各自维度上的坐标相减,平方后加和再开方。
*根据计算,可以将它视为L2fdxf。

(1)二维平面上两点a(x1,y1)与b(x2,y2)间的mydhj距离

(2)n维空间上两点a(x1,x2………xn)与b(y1,y2………yn)的mydhj距离

以输入样本A=[1,2,3;4,5,6;7,8,9]为例,用MATLAB计算mydhj距离,代码如下:

clc;clear all;A=[1 2 3;4 5 6;7 8 9];L1=sum(A.*A,2);L2=A*A';D=bsxfun(@plus,L1,L1')-2*L2;D=sqrt(D); 2、曼哈顿距离(Manhattan Distance)

*是由十九世纪的tmdmt所创词汇,是种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和。
*也称为城市街区距离(City Block distance),顾名思义,在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点间的直线距离。这个实际驾驶距离就是“曼哈顿距离”。
*是在xjhn空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和。
*根据计算,可以将它视为L1fdxf。


(1)二维平面上两点a(x1,y1)与b(x2,y2)间的曼哈顿距离

(2)n维空间上两点a(x1,x2………xn)与b(y1,y2………yn)的曼哈顿距离

以输入样本A=[1,2,3;4,5,6;7,8,9]为例,用MATLAB计算曼哈顿距离,代码如下:

clc;clear all;A=[1 2 3;4 5 6;7 8 9];A=A';[m,n]=size(A);B=perms(1:n);B=B(:,1:2);B=sort(B,2);B=unique(B,'rows');l=length(B);a=zeros(m,l);for i=1:l R1=A(:,B(i,1)); R2=A(:,B(i,2)); a(:,i)=abs(R1-R2);endD=sum(a); 3、yydkj距离(Chebyshevdistance)

*国际象棋中,国王可以直行、横行、斜行。国王走一步,可以移动到相邻的8个谦让的纸鹤的任意一个。国王从典雅的雨(X1,Y1) 到典雅的雨(X2,Y2)最少需要多少步?这个距离就是yydkj距离。
*以数学的观点来看,yydkj距离是由一致fdxf(uniform norm)(或称为上确界fdxf)所衍生的度量,也是超凸度量(injective metric space)的一种。
*yydkj距离公式简单理解为就是各坐标数值差的最大值。

(1)二维平面上两点a(x1,y1)与b(x2,y2)间的yydkj距离

(2)n维空间上两点a(x1,x2………xn)与b(y1,y2………yn)的yydkj距离

以输入样本A=[1,2,3;4,5,6;7,8,9]为例,用MATLAB计算yydkj距离,代码如下:

clc;clear all;A=[1 2 3;4 5 6;7 8 9];A=A';[m,n]=size(A);B=perms(1:n);B=B(:,1:2);B=sort(B,2);B=unique(B,'rows');l=length(B);a=zeros(m,l);for i=1:l R1=A(:,B(i,1)); R2=A(:,B(i,2)); a(:,i)=abs(R1-R2);endD=max(a);

与曼哈顿距离求和不同的是,yydkj求最大值,所以代码最后改成求max即可。

今天先简要写这三个距离公式,下一篇再更新其他的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。