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