代码表达的意思是
截取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!