如何在MATLAB中使用cumsum获得累积和?

时间:2018-05-03 09:26:47

标签: matlab for-loop cumsum

这是代码

for i = 1 : 5
    b = i;
    a=cumsum(b);

end

fprintf('%f \n', a);

我预计1 + 2 + 3 + 4 + 5 = 15所以我最后会打印15个。

但输出5.000000。

如果我在for循环之外编码“a = cumsum(b)”,则不会计算

如何获得我想要的值1 + 2 + 3 + 4 + 5?

谢谢你

2 个答案:

答案 0 :(得分:2)

cumsum执行类似积分的操作,其中输出的每个元素是直到输入向量的该位置(包括)的所有元素的总和。

您的代码不起作用,因为您将单个值传递到cumsum并且没有保存上一个结果的机制,因此您最终只有一个值,这是最后一个一个 - 5

您不需要循环,甚至cumsum - 只需编写sum(1:5)即可获得所需的结果。

答案 1 :(得分:1)

这不是cumsum的工作原理。它需要一个数组的累积和,下面的例子可以解释得更好

a = 1:5;
b = cumsum(a); % b = [1, 3, 6, 10, 15]
c = sum(a) % add up all the elements c = 15

这有帮助吗?