1

假设我有一个由一些元素 (A) 组成的数组,并且我想获取第 n 个元素并将其与它后面的许多元素相加,并且我有一个矩阵,它给出了每个元素的位置我应该开始求和(B)。

例如我有

A = [2 3 4 5 6 3 5 7 3 7 3 7 4 7 3 6 2 6 3 8 4 8 4 8 5 8 3]

我有

B = [8 12 15]

所以我想将位置 B(1,1) 处的值相加,即 8,因此 A(1,8) 与矩阵中接下来的 4 个元素相加

C(1,1) = 7 + 3 + 7 + 3
C(1,2) = 7 + 4 + 7 + 3
C(1,3) = 3 + 6 + 2 + 6
4

2 回答 2

1

使用起来总是很有趣bsxfun

idx = bsxfun( @plus, B, (0:3)' ); %//' indices of A to be summed together
C = sum( A(idx), 1 );
于 2013-06-13T22:34:23.093 回答
0

我从你的问题中了解到的是你想计算一个矩阵 C,你只展示了一个计算 C(1,1) 的例子。C(1,2) 就像,

C(1,2) = 7 + 4 + 7 + 3 + 6 + 2 + 6 + 3 + 8 + 4 + 8 + 4 + 8 + 5 + 8 + 3 = 86

如果我是对的,我的答案是这样的

for i = 1:n
   C(i) = 0;
   for j = B(i):m
      C(i) += A(j);
   end
end

在哪里

n = B的长度(在您的示例中为2)

m = 4(因为您想在矩阵中添加接下来的4 个元素)

于 2013-06-13T21:50:10.120 回答