这是代码
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?
谢谢你
答案 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
这有帮助吗?