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

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

[复制链接]

新手

11 麦片

财富积分


050


2

主题

9

帖子

0

最佳答案
发表于 2019-11-9 02:27:50 | 显示全部楼层 |阅读模式
本帖最后由 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

复制代码

回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

26

主题

1176

帖子

156

最佳答案
  • 关注者: 46
发表于 2019-11-9 11:28:54 | 显示全部楼层
判断语句不要写在一起,每个循环,各自写自己相关的判断,这样就根本上减去了不需要的重复计算了。
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


2

主题

9

帖子

0

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

谢谢版主!判断语句放在各层了。速度有所提升,但还是需要五六十天才能算完。还有其他办法吗?
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

26

主题

1176

帖子

156

最佳答案
  • 关注者: 46
发表于 2019-11-11 12:46:00 | 显示全部楼层
你四个循环的值都是可互换的,那么,是不是考虑只计算一次,其余情况相同呢,按照排列组合,那么将减少A(4,4)的另外23种情况的循环,可以从本质上减少重复的计算量。。
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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