MATLAB pdist函数的使用

pdist:
Pairwise distance between pairs of observations(计算观测点对之间的距离)

示例:

D = pdist(X)
D = pdist(X,Distance)
D = pdist(X,Distance,DistParameter)

1. D = pdist(X)

D = pdist(X) 返回 观测点对之间的欧氏距离。X是m*n矩阵,矩阵中每一行作为observation,每一列作为variables(即计算矩阵中每一行之间的距离),D得到的是一个长度为 m*(m-1)/2 的距离向量,距离是按顺序排列的(2,1),(3,1)…….(m,1),(3,2)………(m,2)………(m,m-1);

举例说明:

X = [0 1; 0 2; 0 3; 0 4;0 5];
D = pdist(X) % 计算 pdist()
Z = squareform(D) % 通过函数 squareform() 得到 i j 的对应关系

输出结果为:

D = 
1     2     3     4     1     2     3     1     2     1

Z =

     0     1     2     3     4
     1     0     1     2     3
     2     1     0     1     2
     3     2     1     0     1
     4     3     2     1     0

可以发现,这里X是 5*2 矩阵( m=5,n=2 ),矩阵D 是 矩阵Z 中的 一部分数据,并且矩阵D 中的数据是 Z(2,1),Z(3,1)…….Z(m,1),Z(3,2)………Z(m,2)………Z(m,m-1) 的顺序排列的

计算方法:
(1) 每一行作为一个观测: x1 = [0 1]; x2 = [0 2]; x2 = [0 3]; x2 = [0 4]; x5 = [0 5];
(2) 计算任意两个之间的欧式距离:
欧氏距离定义在这里插入图片描述

两点间的欧式距离x1 = [0 1]x2 = [0 2]x3 = [0 3]x4 = [0 4]x5 = [0 5]
x1 = [0 1]01234
x2 = [0 2]10123
x3 = [0 3]21012
x4 = [0 4]32103
x5 = [0 5]43210

可以发现,这个表格就是矩阵Z。由于这里X是 5*2 矩阵( m=5,n=2 ),相应的 矩阵D 是 矩阵Z 中的 一部分数据,并且矩阵D 中的数据是 Z(2,1),Z(3,1)…….Z(m,1),Z(3,2)………Z(m,2)………Z(m,m-1) 的顺序排列的。

D =Z(2,1)Z(3,1)Z(4,1)Z(5,1)Z(3,2)Z(4,2)Z(5,2)Z(4,3)Z(5,3)Z(5,4)
D =1234123121

关于其他 pdist 函数 的其他使用方法,具体参考

%在 matlab 中直接执行 help 指令
help  pdist
%然后进入到 pdist 的参考页

参考链接:
[1] matlab的pdist函数详解 http://www.mamicode.com/info-detail-2375292.html

  • 15
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Matlab中,pdist函数用于计算矩阵X中各对行向量的相互距离。具体而言,给定一个m行n列的矩阵X,pdist函数会生成一个长为m(m-1)/2的行向量D,其中D的每个元素表示X中对应行向量之间的距离。生成D的过程如下:首先,计算X的距离方阵,然后取方阵的下三角元素,并按照Matlab中矩阵的按列存储原则排列这些元素的索引。可以使用squareform函数将D转换为原距离方阵。squareform函数是用来进行这种转换的,它的逆变换也是squareform函数。\[1\] 对于给定的m行n列矩阵X,其中被视为m个行向量x1,x2,...,xm,pdist函数定义了向量xs和xt之间的各种距离如下:\[2\] 标准欧氏距离是一种常用的距离度量方法,它可以有效地解决欧氏距离的一些缺点。标准欧氏距离的计算公式如下:d2s,t = (xs - xt)V^(-1)(xs - xt)',其中V是一个n行n列的对角矩阵,其第j个对角元素是S(j)^2,其中S是标准差向量。需要注意的是,在许多Matlab函数中,可以自定义V的值,不一定非得使用标准差,可以根据变量的重要程度设置不同的值,例如knnsearch函数中的Scale属性。\[3\] #### 引用[.reference_title] - *1* *2* *3* [Matlab中 pdist 函数详解(各种距离的生成)](https://blog.csdn.net/ww2011/article/details/121022149)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值