0

假设我有一个向量B=[1 1 2 2],并A=[5 6 7 4]以 B 的形式表示 A 中需要汇总的数字。也就是说,我们需要将 5 和 6 相加作为结果数组的第一个条目,并将 7 和 4 相加作为第二个条目。如果 B 是[1 2 1 2]结果的第一个元素是 5+7,第二个元素是 6+4。

在一般意义上,我怎么能在 Matlab 中做到这一点?

4

2 回答 2

4

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

accumarray(B',A')

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

由于文档不容易理解,我将总结为什么它是灵活的。你可以:

  • 选择你的累积功能sum默认)
  • 将位置指定为一组坐标以累积到ND 数组中
  • 预设累积数组的维度(默认展开到最大位置)
  • 使用自定义值填充非累积位置(0默认情况下填充)
  • 将累积的数组设置为sparse,从而避免内存不足
于 2013-04-15T19:40:05.547 回答
0
[sum(A(1:2:end));sum(A(2:2:end))]
于 2013-04-15T19:42:39.843 回答