You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Matlab中如何对向量每n个元素求和并存储到新向量?

实现向量分组求和的Matlab方法

当然可以实现这个需求!Matlab里有几种简洁高效的方式来完成每n个元素分组求和的操作,下面给你介绍两种常用方法:

方法1:使用reshape + sum(推荐)

这是最简洁且高效的方式,利用Matlab的矩阵操作特性一步完成:

% 假设你已经生成了向量m,且已知nsimul和n的值
A = sum(reshape(m, n, nsimul), 1);

原理说明:

  • reshape(m, n, nsimul)会把1×(nsimul×n)的向量m转换成n行、nsimul列的矩阵,每一列正好对应原向量中连续的n个元素(比如你的示例中,转换后第1列是[1; -1],第2列是[1; -1],以此类推)。
  • sum(..., 1)表示对矩阵的每一列求和,最终得到的1×nsimul向量就是你需要的A。

用你的示例验证:
当m = [1 -1 1 -1 1 -1 -1 1 1 -1],n=2,nsimul=5时,执行代码后会得到A = [0 0 0 0 0],完全符合预期。

方法2:使用循环实现

如果你更习惯用循环逻辑,也可以通过索引遍历完成:

A = zeros(1, nsimul); % 预先初始化结果向量
for i = 1:nsimul
    % 计算每组元素的索引范围
    idx_start = (i-1)*n + 1;
    idx_end = i*n;
    % 对当前组的元素求和并赋值给A的对应位置
    A(i) = sum(m(idx_start:idx_end));
end

这种方法逻辑更直观,适合刚接触Matlab的用户,但对于大规模数据来说,效率不如第一种方法。

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

火山引擎 最新活动