我有一个值向量,需要在另一个向量指定的索引处添加到第二个向量。如何使用 Octave/Matlab 完成此任务?
编辑:v1 = [1 2 3 4]
v2 = [0 0]
指数 = [1 2 1 2]
输出 = [4 6]
v1 的第一个和第三个元素添加到 v2 的索引 1,v1 的第二个和第四个元素添加到 v2 的第二个元素。
我认为这就是您的意思(如果您在问题中提供一个小示例,则更容易理解)。
你有一个值向量
toAdd = 1:5;
你有第二个更大的向量:
bigVector = 1:10;
您想要做的,在其中将特定索引处bigVector + toAdd
的元素添加到 中,由以下方式指定:toAdd
bigVector
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)
的元素。outputVector
bigVector
indices
这应该这样做:
for k=unique(indices),
v2(k) = v2(k) + sum(v1(indices==k));
end
它的......
v2 = accumarray(indices, v1)