假设我有
A = [10 20 30 40];
idx = [1 1 1 2];
result = [0 0];
我需要在idx中对A的索引求和
result(1) = A(1) + A(2) + A(3);
result(2) = A(4);
我实现了代码
for i=1:length(idx)
result(idx(i)) += A(i);
end
如果可能的话,如何将其转换为更加八度标准的代码呢?
最佳答案 看看
accumarray,它完全符合您的要求,它只需要它的第一个输入列:
A = [10 20 30 40];
idx = [1 1 1 2];
result = accumarray(idx',A)
result =
60
40
是的,这也适用于八度;)(link)