主要内容

squareform

格式化距离矩阵

说明

ZOut = squareform(yIn)yIn(对于 m 个观测值,它是长度为 m(m–1)/2 的两两距离向量)转换为 ZOut(对角线上全部为零的 m×m 对称矩阵)。

yIn 中的两两距离按 (2,1)、(3,1)、...、(m,1)、(3,2)、...、(m,2)、...、(m,m–1) 的顺序排列。第 i 个和第 j 个观测值之间的两两距离在 ZOut(i,j) 中,如果 ij,则两两距离在 yIn((i–1)*(m–i/2)+j–i) 中。

示例

yOut = squareform(ZIn)ZIn(对角线上全部为零的对称方阵)转换为 yOut(对角线下包含 ZIn 元素的向量)。

ZOut = squareform(yIn,'tomatrix') 强制 squareformyIn 视为向量,并将 yIn 转换为矩阵。

yOut = squareform(ZIn,'tovector') 强制 squareformZIn 视为矩阵,并将 ZIn 转换为向量。如果 ZIn 是标量 (1×1),则 ZIn 必须为零。

当输入参量是标量时,前两种语法很有用。如果未指定 'tomatrix''tovector',则默认值为 'tomatrix'

示例

全部折叠

计算成对观测值之间的欧几里德距离,并使用 squareform 将距离向量转换为矩阵。

创建包含三个观测值和两个变量的矩阵。

rng('default') % For reproducibility
X = rand(3,2);

计算欧几里德距离。

D = pdist(X)
D = 1×3

    0.2954    1.0670    0.9448

两两距离按 (2,1)、(3,1)、(3,2) 顺序排列。通过使用 squareform,您可以轻松定位观测值 ij 之间的距离。

Z = squareform(D)
Z = 3×3

         0    0.2954    1.0670
    0.2954         0    0.9448
    1.0670    0.9448         0

squareform 返回一个对称矩阵,其中 Z(i,j) 对应于观测值 ij 之间的两两距离。例如,您可以找到观测值 2 和 3 之间的距离。

Z(2,3)
ans = 
0.9448

Z 传递给 squareform 函数,以重现 pdist 函数的输出。

y = squareform(Z)
y = 1×3

    0.2954    1.0670    0.9448

squareform 的输出 ypdist 的输出 D 是相同的。

输入参数

全部折叠

输入距离向量,指定为长度为 m(m-1)/2 的数值或逻辑向量,其中 m 是观测值数目。

yIn 中的两两距离按 (2,1)、(3,1)、...、(m,1)、(3,2)、...、(m,2)、...、(m,m–1) 顺序排列,即按列向排列 m×m 距离矩阵的左下三角元素。观测值 ij 之间的两两距离对应于 yIn((i–1)*(m–i/2)+j–i),其中 ij

您可以使用 pdist 函数创建 yInmpdist 的输入数据中的观测值数目。

数据类型: single | double | logical

输入距离矩阵,指定为数值或逻辑矩阵。ZIn 是对角线上全部为零的 m×m 对称矩阵,其中 m 是观测值的数目。ZIn(i,j) 表示第 i 个和第 j 个观测值之间的距离。

数据类型: single | double | logical

输出参量

全部折叠

距离向量,以长度为 m(m-1)/2 的数值或逻辑向量形式返回,其中 m 是观测值数目。

yOut 中的两两距离按 (2,1)、(3,1)、...、(m,1)、(3,2)、...、(m,2)、...、(m,m–1) 顺序排列,即按列向排列 m×m 距离矩阵的左下三角元素。观测值 ij 之间的两两距离对应于 yOut((i–1)*(m–i/2)+j–i),其中 ij

yOutpdist 函数的输出具有相同的格式。

距离矩阵,以数值或逻辑矩阵形式返回。ZOut 是对角线上全部为零的 m×m 对称矩阵,其中 m 是观测值的数目。ZOut(i,j) 表示第 i 个和第 j 个观测值之间的距离。

提示

  • 您可以使用 squareform 来格式化类似于距离向量或矩阵的向量或矩阵,例如相关系数矩阵 (corrcoef)。

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

另请参阅