たとえば、n ベクトルのセットから一度に 2 つのベクトルの合計が必要です。
A1=[1 2 3]
A2=[2 3 4]
A3=[3 4 5]
.
.
.
An=[6 6 9]
i と j のすべての値に対して (Ai + Aj) の合計が必要です。したがって、n=10 の場合、すべての組み合わせ、つまり 10*9/2 が必要です。
たとえば、n ベクトルのセットから一度に 2 つのベクトルの合計が必要です。
A1=[1 2 3]
A2=[2 3 4]
A3=[3 4 5]
.
.
.
An=[6 6 9]
i と j のすべての値に対して (Ai + Aj) の合計が必要です。したがって、n=10 の場合、すべての組み合わせ、つまり 10*9/2 が必要です。
n 個のベクトルのセットが行列A
に行ごとに格納されていると仮定して、手動で計算する方法を次に示します。
考えられるすべてのインデックスのペアを取得します (考えられる答えについては、この質問を参照してください)。例えば:
[idx2, idx1] = find(ones(N, N));
対応するペアは次のように与えられます。
pairs = [idx1(:), idx2(:)];
あるいは、繰り返しに興味がない場合 (たとえば、 A 1 +A 1の合計を求めたくない場合など) は、次のように使用できますnchoosek
。
pairs = nchoosek(1:N, 2)
idx1 = pairs(:, 1);
idx2 = pairs(:, 2);
インデックスの各ペアを使用して、 の対応する行を合計しますA
。
sums = A(idx1(:), :) + A(idx2(:), :);
あるいは、A iと A jの各ペアの要素の総和が必要な場合は、代わりに行うことができますsum(A(idx1(:), :) + A(idx2(:), :), 2)
。
の例を次に示しN = 3
ます。
A = [1 2 3; 2 3 4; 3 4 5];
N = size(A, 1);
[idx2, idx1] = find(ones(N, N));
pairs = [idx1(:), idx2(:)];
sums = A(idx1(:), :) + A(idx2(:), :);
結果は次のとおりです。
pairs =
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
sums =
2 4 6
3 5 7
4 6 8
3 5 7
4 6 8
5 7 9
4 6 8
5 7 9
6 8 10