使用Octave / Matlab将向量的值添加到另一个

时间:2012-04-11 04:19:00

标签: matlab octave

我有一个值向量,我需要在另一个向量指定的索引处添加到第二个向量。如何使用Octave / Matlab完成此操作?

编辑: v1 = [1 2 3 4]

v2 = [0 0]

indices = [1 2 1 2]

输出= [4 6]

v1的第一个和第三个元素被添加到v2的索引1,v1的第二个和第四个元素被添加到v2的第二个元素。

3 个答案:

答案 0 :(得分:2)

认为这就是你的意思(如果你在问题中提供一个小例子,那就更容易理解了。)

你有一个值向量

toAdd = 1:5;

你有第二个更大的向量:

bigVector = 1:10;

您希望执行bigVector + toAdd,其中将特定索引的toAdd元素添加到bigVector,由{<1}}指定:

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)bigVector(indices),它会选择向量outputVector指定的bigVectorindices元素。

答案 1 :(得分:1)

这应该做:

for k=unique(indices),
    v2(k) = v2(k) + sum(v1(indices==k));
end

答案 2 :(得分:0)

这是......

v2 = accumarray(indices, v1)