【发布时间】:2018-05-03 09:26:47
【问题描述】:
这是代码
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?
谢谢你
【问题讨论】:
这是代码
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?
谢谢你
【问题讨论】:
cumsum 执行类似积分的操作,其中输出的每个元素是输入向量的该位置(包括)之前所有元素的总和。
您的代码不起作用,因为您将单个值传递给 cumsum 并且没有保存先前结果的机制,因此您最终只有一个值,即最后一个值 - @987654323 @。
您不需要循环,甚至不需要 cumsum - 只需编写 sum(1:5) 即可获得所需的结果。
【讨论】:
cumsum 不是这样工作的。它采用数组的累积和,下面的示例可能会更好地解释
a = 1:5;
b = cumsum(a); % b = [1, 3, 6, 10, 15]
c = sum(a) % add up all the elements c = 15
这有帮助吗?
【讨论】: