我有一个1 * 3000双矩阵。我正在做一些计算,我需要计算每一步中n-1列的总和。
例如,如果我有这个矩阵:
A = [1 2 3 4 5 6]
我正在寻找的总和应该是这样的:
B = [0 1 1+2 1+2+3 1+2+3+4 1+2+3+4+5] = [0 1 3 6 10 15]
意思是,在每一步中,我们计算矩阵的n-1列的总和,而n从1开始到矩阵的列数。
由于列数为3000,我不能使用'for'循环。
请告诉我该怎么办?
答案 0 :(得分:2)
您可以使用函数cumsum
:
A = [1 2 3 4 5 6];
C = cumsum(A);
out = [0 C(1:end-1)]
现在out
是:[0 1 3 6 10 15]
答案 1 :(得分:0)
如果您只需要一个B值,则可以使用sum(A(1:n))
来计算该值。如果你需要计算B的所有3000个值,我认为你会用for循环做好。如果你使用它,3000次迭代并不多:
A = 1:3000;
B = zeros(1, 3000);
B(1) = A(1);
for i = 2:3000
B(i) = B(i-1) + A(i);
end