如何将矩阵实体求和为另一个向量值的索引?

时间:2013-04-15 19:33:18

标签: matlab multidimensional-array sum

假设我有一个向量B=[1 1 2 2]和{B}形式的A=[5 6 7 4]表示A中的数字需要总结。那就是我们需要将5和6加起来作为结果数组的第一个条目,将和7和4作为第二个条目。如果B是[1 2 1 2],则结果的第一个元素是5 + 7,第二个元素是6 + 4.

我怎么能在Matlab中以一般意义来做呢?

2 个答案:

答案 0 :(得分:4)

一种灵活而通用的方法是使用accumarray()

accumarray(B',A')

该函数将A中的值累积到B指定的位置。

由于文档不易理解,我将总结其灵活性的原因。你可以:

  • 选择累积功能(默认情况下为sum
  • 将位置指定为一组坐标,以便累积到 ND阵列
  • 预设累积数组的维度(默认情况下会扩展到最大位置)
  • pad 自定义值非累积位置(默认为0
  • 将累积的数组设置为sparse,从而避免内存不足

答案 1 :(得分:0)

[sum(A(1:2:end));sum(A(2:2:end))]