【问题标题】:Create distance matrix from the result of pdist根据 pdist 的结果创建距离矩阵
【发布时间】:2023-09-17 07:28:01
【问题描述】:

我想根据 pdist 的结果创建一个矩阵。 pdist 返回距离向量:1-2、1-3、1-4.. 2-3.. 等。

我已尝试按照建议使用它来获取上三角形:

a = [1,2,3,4,5,6,7,8,9,10]
b=triu(ones(5),1);
b(b==1)=a;

但这会返回

0     1     2     4     7 
0     0     3     5     8
0     0     0     6     9
0     0     0     0    10
0     0     0     0     0

是否有一个 oneliner/function 可以正确执行此操作?

【问题讨论】:

  • 你需要什么结果?

标签: matlab matrix


【解决方案1】:

据我了解,您想从 PDIST 函数结果创建方阵。可以使用SQUAREFORM 函数轻松完成。它在两个方向都有效。

a = pdist(...);
asq = squareform(a);

【讨论】:

  • 嗯,这几乎是一种读心术。 :) 也许你应该研究一个问题公式,使其对其他人有用。