1

リスト (1,2,3,4,5) には、5*4/2 = 10 の組み合わせを含めることができます。ペアワイズ乗算を実行する場合は、R で次のように実行します。

x <- 1:5
mx <- x%o%x
mx
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    2    4    6    8   10
[3,]    3    6    9   12   15
[4,]    4    8   12   16   20
[5,]    5   10   15   20   25
mx <- mx[lower.tri(mx)]
mx
[1] 2  3  4  5  6  8 10 12 15 20

MATLAB でこれを行うにはどうすればよいですか?

4

2 に答える 2

1

n 行 1 列の配列と 1 行 n 列の配列の行列乗算を実行するだけです。

out = (1:5)' * (1:5)

out =

     1     2     3     4     5
     2     4     6     8    10
     3     6     9    12    15
     4     8    12    16    20
     5    10    15    20    25

対角線より下の値を取得するには、次のようにします。

idx = tril(true(5),-1);
mx = out(idx)
于 2013-01-30T23:13:34.317 に答える
0

次のように動作しますが、コードの余分な行を回避する方法を見つけられれば幸いです ( UPDATE: @Jonas はより適切なソリューション +1 を提供しています)。

A = [1 2 3 4 5];
B = A' * A;
C = triu(B, 1);
C = sort(C(C ~= 0));

C' =

     2     3     4     5     6     8    10    12    15    20
于 2013-01-30T23:15:50.207 に答える