找回密码
 注册
Simdroid-非首页
查看: 140|回复: 4

程序去循环,最大程度提速问题

[复制链接]
发表于 2013-10-6 12:27:35 | 显示全部楼层 |阅读模式 来自 上海
  1. for n=2:N-1;
  2. AA=zeros(N-2,N-2);
  3. BB=zeros(N-2,1);
  4. for m=2:N-1;
  5. BB(m-1)=TT(m,n-1)+(Z-2)*TT(m,n)+TT(m,n+1)-R*CC(m,n).*DD(m,n);
  6. if m==2;
  7. BB(m-1)=BB(m-1)+TT(m-1,n);
  8. AA(m-1,m)=-1;
  9. else
  10. if m==N-1;
  11. BB(m-1)=BB(m-1)+TT(m+1,n);
  12. AA(m-1,m-2)=-1;
  13. else
  14. AA(m-1,m)=-1;
  15. AA(m-1,m-2)=-1;
  16. end
  17. end
  18. AA(m-1,m-1) =Z+2;
  19. end
  20. TU=AA\BB;
  21. for m=1:N-2;
  22. T(m+1,n) = TU(m);
  23. end
  24. end
复制代码
对于这样一个小程序,采用迎风格式迭代,速度太慢,有什么方法可以最大程度提速,加速程序运行

点评

用matlab进行流场的模拟,个人认为这种慢是必然的,程序是过程性的,又不好改为向量化,所以这也是很多的模式采用fortran的原因吧  发表于 2013-10-8 17:42
发表于 2013-10-8 10:17:36 | 显示全部楼层 来自 河北唐山
Simdroid开发平台
虽然楼主写的程序我是不太懂是什么意思,但是可以提几点意见:
楼主写程序的风格确实有问题,怎么不加空格和TAB键啊,显得太乱了啊!根本就看不清格式。
matlab想加快运行速度,主要是得使用自带的库函数,利用矩阵操作,代替循环函数!希望对楼主游泳啊!:)

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2013-10-8 18:04:33 | 显示全部楼层 来自 上海
zhanghaiw 发表于 2013-10-8 10:17
虽然楼主写的程序我是不太懂是什么意思,但是可以提几点意见:
楼主写程序的风格确实有问题,怎么不加空格 ...

这个程序 在主程序里面空格和TAB里面都有用到,不存在上述问题,只是程序贴进来变成了这种效果,现在的问题主要还是侧重于通过去循环提速,如果能轻松的用矩阵整体迭代计算,就不至于发帖如此了
回复 不支持

使用道具 举报

发表于 2014-1-7 19:21:39 | 显示全部楼层 来自 甘肃兰州
将式子齐整   
回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-1 21:36 , Processed in 0.034658 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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