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] | 0 | 1 | 2 | 3 | 4 |
x2 = [0 2] | 1 | 0 | 1 | 2 | 3 |
x3 = [0 3] | 2 | 1 | 0 | 1 | 2 |
x4 = [0 4] | 3 | 2 | 1 | 0 | 3 |
x5 = [0 5] | 4 | 3 | 2 | 1 | 0 |
可以发现,这个表格就是矩阵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 = | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 1 | 2 | 1 |
关于其他 pdist 函数 的其他使用方法,具体参考
%在 matlab 中直接执行 help 指令
help pdist
%然后进入到 pdist 的参考页
参考链接:
[1] matlab的pdist函数详解 http://www.mamicode.com/info-detail-2375292.html