代码表达的意思是
截取a数组的3段:[2 3 4],[3 4 5],[4 5 6]. 然后3段数组相加
########################################
clc;
a = [2 3 4 5 6 7];
b = zeros(1,3);
for i = 1:3
    b = b + a(i:i+2);
end
结果:
b =
     9    12    15
###########################################
我用一下方式尝试替代for循环
a = [2 3 4 5 6 7];
i = 1:3;
b = zeros(1,3);
b = b + a(i:i+2);
结果:
b =
     2     3     4
############################################
我的核心问题是,如何将for i = 1:3这样的for循环用非循环替代从而节省运算时间

 采纳的回答

0 个投票

你这个看程序b是用 a 的1-3 a2-4 a3-5 的元素进行叠加。 也可以看成 b的1号元素又 a的 1-3号元素相加 b的2号元素由a2-4 b的3 号元素由 a3-5 跌加活动
这样你就有多种办法解决这个问题,
1 直接 b(1,1)=sum(a(1:3)) b(1,2)=sum(a(2:4)) b(1,3)=sum(a(3:5))
2 用矩阵乘法, 设置一个矩阵 为 z=[1 0 0 ;1 1 0 ;1 1 1;0 1 1 ; 0 0 1 ;0 0 0 ]
b=a*z

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 循环及条件语句 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!