1

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

编辑:v1 = [1 2 3 4]

v2 = [0 0]

指数 = [1 2 1 2]

输出 = [4 6]

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

4

3 回答 3

2

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

你有一个值向量

toAdd = 1:5;

你有第二个更大的向量:

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 回答