2

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

これを正しく行うためのワンライナー/関数はありますか?

4

1 に答える 1

3

タイトルからわかるように、PDIST 関数の結果から正方行列を作成します。SQUAREFORM関数で簡単にできます。そして、それは双方向に機能します。

a = pdist(...);
asq = squareform(a);
于 2013-04-01T20:28:25.553 に答える