【问题标题】:sum over indexes对索引求和
【发布时间】:2012-10-21 13:13:44
【问题描述】:

假设我有

A = [10 20 30 40];
idx = [1 1 1 2];
result = [0 0];

我需要对 idx 中的索引求和,这样

result(1) = A(1) + A(2) + A(3);
result(2) = A(4);

我实现了代码

for i=1:length(idx)
  result(idx(i)) += A(i);
end

如果可能的话,我如何将其转换为更多八度标准的代码?

【问题讨论】:

标签: matlab octave


【解决方案1】:

看看accumarray,它完全按照你的要求做,它只需要它的第一个输入作为一个列:

A = [10 20 30 40];
idx = [1 1 1 2];
result = accumarray(idx',A)

  result =

      60
      40

是的,这也适用于八度音阶;) (link)

【讨论】:

    猜你喜欢
    • 2017-06-11
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多