MATLAB - 从另一个矩阵读取其位置后对值求和

时间:2013-06-13 21:16:37

标签: matlab

假设我有一个由一些元素(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

2 个答案:

答案 0 :(得分:1)

使用bsxfun

总是很有趣
idx = bsxfun( @plus, B, (0:3)' ); %//' indices of A to be summed together
C = sum( A(idx), 1 );

答案 1 :(得分: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 元素)