作业帮 > 综合 > 作业

这段matlab程序怎么优化

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/13 08:21:02
这段matlab程序怎么优化
m=1;
A=[0 3 5.5 7.5 9 10 10];
B=[0 3 6 8 9.5 10.5 11];
C=[0 4 6.5 8.5 9 9 9];
D=[0 3.5 6 7.5 8.5 9 9];
for i=1:7
for j=1:7
for k=1:7
for l=1:7
if i+j+k+l==10
d(m)=A(i)+B(j)+C(k)+D(l);
E(m,1)=i;
E(m,2)=j;
E(m,3)=k;
E(m,4)=l;
m=m+1;
end
end
end
end
end
这段matlab程序怎么优化
你的E和d在循环中,其长度不断变化,所以应该先给E和d预分配内存.对于四个for,我暂时没想到向量化的方法.但至少你可以改成这样for i=1:7
     for j=1:8-i
           for k=1:9-i-j
              l = 10 -i -j;
再问: 我验算了一下不行啊,你这个什么思路?
再答: 思路就是,如果你是要满足i+j+k+l = 10,那么当前面的确定后,后面的搜索范围就应该减小,从而减少不必要的循环次数。 举个两个的例子,a,b都是1到10的整数,搜索满足a+b = 7的组合。 当a取3后,则b只能从1到7-a也就是4中取,让b再尝试后面的5到10是没有意义的,因此肯定不满足a+b = 7 。 如果上面不对,只能是你程序写错了,再考虑下吧。