代码表达的意思是
截取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循环用非循环替代从而节省运算时间

 Accepted Answer

0 votes

你这个看程序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

More Answers (0)

Categories

Find more on 循环及条件语句 in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!