查看: 103|回复: 3|关注: 0

[已答复] 求教如何优化4层for循环

[复制链接]

新手

11 麦片

财富积分


050


2

主题

9

帖子

0

最佳答案
发表于 6 天前 | 显示全部楼层 |阅读模式
本帖最后由 fengkp 于 2019-11-9 02:36 编辑

4层for循环执行太慢,代码如下,求教如何优化?
  1. data=ones(1000,6000);
  2. for z=1:1000
  3.     for p=1:1000
  4.         for x=1:1000
  5.             for y=1:1000
  6.                 if (z~=p && z~=x&& z~=y&& p~=x&&p~=y &&x~=y)
  7.                     k=(data(z,:)-data(x,:))./(data(p,:)-data(y,:));
  8.                 end
  9.             end
  10.         end
  11.     end
  12. end

复制代码

论坛优秀回答者

15

主题

1108

帖子

144

最佳答案
  • 关注者: 39
发表于 6 天前 | 显示全部楼层
判断语句不要写在一起,每个循环,各自写自己相关的判断,这样就根本上减去了不需要的重复计算了。

新手

11 麦片

财富积分


050


2

主题

9

帖子

0

最佳答案
 楼主| 发表于 6 天前 | 显示全部楼层
caicaibi 发表于 2019-11-9 11:28
判断语句不要写在一起,每个循环,各自写自己相关的判断,这样就根本上减去了不需要的重复计算了。 ...

谢谢版主!判断语句放在各层了。速度有所提升,但还是需要五六十天才能算完。还有其他办法吗?

论坛优秀回答者

15

主题

1108

帖子

144

最佳答案
  • 关注者: 39
发表于 4 天前 | 显示全部楼层
你四个循环的值都是可互换的,那么,是不是考虑只计算一次,其余情况相同呢,按照排列组合,那么将减少A(4,4)的另外23种情况的循环,可以从本质上减少重复的计算量。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表