模式识别作业题1

(模式识别作业 ——matlab 实现样本点之间的各类距离 (非调用 pdist))

给定一个含3个样本的样本集合,编程实现计算其各点之间的各类距离

设三个样本点为 (1,0),(0,1),(1,1)。

%Sample points
X=[ 1 0; 0 1; 1 1];
[m,n]=size(X);	%m为样本个数,n为维度

Manhattan distance(City Block Distance)

图1

图中,红色为曼哈顿距离,绿色为欧氏距离,蓝色和黄色为等价的曼哈顿距离。用以标明两个点在标准坐标系上的绝对轴距总和。

二维中两点 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1,y1),(x2,y2)的欧氏距离
d = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ d=|x_1-x_2|+|y_1-y_2| d=x1x2+y1y2

X=X';
B=perms(1:m);
B=B(:,1:2);
B=sort(B,2);
B=unique(B,'rows');
l=length(B);
a=zeros(2);
for i=1:l
    R1=X(:,B(i,1));
    R2=X(:,B(i,2));
    a(:,i)=abs(R1-R2);
end
Dis=sum(a);
disp('Manhattan distance between any two points')
Dis

运行结果图片就不放了,大家可以复制运行。

Euclidean distance

从上图可以看出,欧氏距离就是两点的直线距离。

二维中两点 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1,y1),(x2,y2)的欧氏距离
d = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 d=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2} d=(x1x2)2+(y1y2)2

k=1;
Dis=zeros(1,3);
for i=1:N
    for j=1:N
        if i<j
            dis1=sum((X(i,1:3)-X(j,1:3)).^2);
            Dis(1,k)=sqrt(dis1);	%也可以用matlab自带的dist函数来计算,使用方法自行百度
            k=k+1;
        end
    end
end
disp('Euclidean distance between any two points')
Dis

Chebychev distance

国际象棋中,国王可以移动到相邻的8个方格中任意一个。那国王从格子 ( x 1 , y 1 ) (x_1,y_1) (x1,y1) ( x 2 , y 2 ) (x_2,y_2) (x2,y2)最少需要多少步?这个距离叫切比雪夫距离。

二维中两点 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1,y1),(x2,y2)的切比雪夫距离
d = m a x ( ∣ x 1 − x 2 ∣ , ∣ y 1 − y 2 ∣ ) d=max(|x_1-x_2|,|y_1-y_2|) d=max(x1x2,y1y2)
代码和曼哈顿距离的类似。

X=X';
B=perms(1:m);
B=B(:,1:2);
B=sort(B,2);
B=unique(B,'rows');
l=length(B);
a=zeros(2);
for i=1:l
    R1=X(:,B(i,1));
    R2=X(:,B(i,2));
    a(:,i)=abs(R1-R2);
end
Dis=max(a);
disp('Chebyshev distance between any two points')
Dis

Mahalanobis distance

马氏距离是一种距离的度量,可以看作是欧氏距离的一种修正,修正了欧氏距离中各个维度尺度不一致且相关的问题。

1.度量样本到样本分布间的距离
d = ( x → − μ → ) T S − 1 ( x → − μ → ) d=\sqrt{(\overrightarrow{x}-\overrightarrow{\mu})^TS^{-1}(\overrightarrow{x}-\overrightarrow{\mu})} d=(x μ )TS1(x μ )
其中 μ → \overrightarrow{\mu} μ 是样本分布的均值,S是样本分布的协方差矩阵。

2.度量一个分布下,两个样本之间的距离
d = ( x → − y → ) T S − 1 ( x → − y → ) d=\sqrt{(\overrightarrow{x}-\overrightarrow{y})^TS^{-1}(\overrightarrow{x}-\overrightarrow{y})} d=(x y )TS1(x y )

Dis=zeros(m);
Cov=cov(X);
for i=1:m
    for j=1:m
        Dis(i,j)=sqrt((X(i,:)-X(j,:))*inv(Cov)*(X(i,:)-X(j,:))');
    end
end
disp('Mahalanobis distance between any two points')
Dis

其余距离

其余距离本文不展示,可以查阅别的资料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值