【这段matlab程序怎么优化m=1;A=[035.57.5-查字典问答网
分类选择

来自高晓琳的问题

  【这段matlab程序怎么优化m=1;A=[035.57.591010];B=[03689.510.511];C=[046.58.5999];D=[03.567.58.599];fori=1:7forj=1:7fork=1:7forl=1:7ifi+j+k+l==10d(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;enden】

  这段matlab程序怎么优化

  m=1;

  A=[035.57.591010];

  B=[03689.510.511];

  C=[046.58.5999];

  D=[03.567.58.599];

  fori=1:7

  forj=1:7

  fork=1:7

  forl=1:7

  ifi+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

3回答
2020-07-2723:44
我要回答
提示:回答问题需要登录哦!
陆洪涛

  你的E和d在循环中,其长度不断变化,所以应该先给E和d预分配内存.对于四个for,我暂时没想到向量化的方法.但至少你可以改成这样fori=1:7 forj=1:8-i &n...

2020-07-27 23:48:22
高晓琳

  我验算了一下不行啊,你这个什么思路?

2020-07-27 23:52:09
陆洪涛

  思路就是,如果你是要满足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。如果上面不对,只能是你程序写错了,再考虑下吧。

2020-07-27 23:54:35
大家都在问
最新问答