You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中用cumsum实现1到5的累加求和?代码问题求解

问题分析与解决方案

咱们先拆解下你代码里的问题,再一步步解决~

  • 你在循环里每次执行 b = i,此时b只是单个数值(第一次是1,第二次是2…第五次是5)
  • 调用cumsum(b)时,因为cumsum对单个数值的累加结果就是它本身,所以每次循环a都会被重新赋值为当前的i,循环结束后a自然就是最后一次的5,这就是输出5.000000的原因。

下面给你几种能得到正确累加结果的方法:

方法1:直接在循环中累加(最简单高效)

初始化一个累加变量a为0,每次循环把当前的i加到a上:

a = 0;
for i = 1 : 5
    a = a + i;
end
fprintf('%f\n', a);

循环结束后,a就是1+2+3+4+5的总和15,完全符合你的预期。

方法2:用cumsum实现(保留你想用这个函数的需求)

如果一定要用cumsum,你需要先把所有要累加的数存成数组,再对数组做累加,最后取累加结果的最后一个元素:

b = []; % 初始化空数组
for i = 1 : 5
    b = [b, i]; % 把每次的i添加到数组b中
end
a = cumsum(b); % 对数组b累加得到[1,3,6,10,15]
fprintf('%f\n', a(end)); % 取最后一个元素15输出

你之前把a = cumsum(b)写在循环外不行,是因为当时的b只是循环最后一次的单个数值5,而非包含1到5的数组,所以cumsum处理后还是5。

方法3:不用循环,直接用MATLAB向量运算(更简洁)

MATLAB天生擅长向量操作,完全可以不用循环实现:

a = sum(1:5); % 直接计算1到5的总和
fprintf('%f\n', a);

或者用cumsum的写法:

a = cumsum(1:5);
fprintf('%f\n', a(end));

这种方式代码更简洁,运行效率也更高~

内容的提问来源于stack exchange,提问作者ONION

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:37:25