1

別のベクトルで指定されたインデックスで 2 番目のベクトルに追加する必要がある値のベクトルがあります。Octave/Matlab を使用してこれを達成するにはどうすればよいですか?

編集: v1 = [1 2 3 4]

v2 = [0 0]

インデックス = [1 2 1 2]

出力 = [4 6]

v1 の 1 番目と 3 番目の要素が v2 のインデックス 1 に追加され、v1 の 2 番目と 4 番目の要素が v2 の 2 番目の要素に追加されます。

4

3 に答える 3

2

これがあなたの言いたいことだと思います(質問で小さな例を提供すると、理解しやすくなります)。

値のベクトルがあります

toAdd = 1:5;

2 つ目の大きなベクトルがあります。

bigVector = 1:10;

特定のインデックスでbigVector + toAddの要素を に追加する場合、次のように指定します。toAddbigVector

indices = [1 3 5 7 9];

つまり、出力ベクトルが必要です。

[ bigVector(1)+toAdd(1);
  bigVector(2);
  bigVector(3)+toAdd(2);
  bigVector(4);
  bigVector(5)+toAdd(3);
  ....
 ]

その場合、次のことができます。

outputVector = bigVector;
outputVector(indices) = bigVector(indices) + toAdd;

特に、ベクトル によって指定されたおよびの要素を選択するoutputVector(indices)andに注意してください。bigVector(indices)outputVectorbigVectorindices

于 2012-04-11T04:50:59.757 に答える
1

これは次のことを行う必要があります。

for k=unique(indices),
    v2(k) = v2(k) + sum(v1(indices==k));
end
于 2012-04-11T07:31:12.220 に答える
0

これは......

v2 = accumarray(indices, v1)
于 2012-09-28T19:37:47.593 に答える