sun1993 发表于 2009-8-13 14:19

请教for循环的优化

用for循环赋值计算需要很长时间,如果能化成矩阵的话,运算就会快得多
3个for循环就已经很头痛了,现在碰到6个,有点懵了
请教大家,形如
         for x=0:a
             for y=0:b
               for z=0:c
                     for x2=0:d
                         for y2=0:e
                           for z2=0:f
                                 I=f(x,y,z,x2,y2,z2);
                           end
                         end
                     end
               end
             end
         end
的情况,该如何化简?

ChaChing 发表于 2009-8-13 20:39

I=f(x,y,z,x2,y2,z2);是什麽?

linus22 发表于 2009-8-14 09:07

楼主的程序过于飘忽,也不完整,完全不知所云。。。所以我只能告诉你,matlab的优势在于矢量化,要大幅度提速就要尽量减少循环,把循环变成矩阵,矢量化的运行。

[ 本帖最后由 ChaChing 于 2009-8-15 00:11 编辑 ]

yuxma 发表于 2009-8-16 20:33

尽量避免用for!!!!!

sun1993 发表于 2009-8-24 20:18

回复 板凳 linus22 的帖子

我的意思是,如何把FOR循环去掉,直接用矩阵
三个FOR循环的时候,可以把X,Y,Z写成三个矩阵
六个的时候,X,Y,Z,X2,Y2,Z2的矩阵写法,我有点晕了

sun1993 发表于 2009-8-24 20:19

回复 沙发 ChaChing 的帖子

具体函数形式无所谓
我只是想把循环去掉

kakalx 发表于 2009-8-24 20:34

回复 6楼 sun1993 的帖子

照你说的,三个for循环是怎么处理的?

sun1993 发表于 2009-8-24 20:53

回复 7楼 kakalx 的帖子

用了很笨的方法,就是把x,y,z按照取值顺序写成矩阵
比如都取1到3,那么x=;
                  y=;
                  Z=;
用一些重复行或列的命令写出来就行了。
   呵呵,我说了是很笨的方法了,别笑话我。:@L 碰到6个的,我绕糊涂了。:@Q
   有好方法的同学,能不能教教我

ChaChing 发表于 2009-8-24 21:49

说真的, 个人水平专业有限, 还是没清楚LZ的问题!
不懂为何"具体函数形式无所谓"?

波波球 发表于 2009-8-24 22:52

回复 6楼 sun1993 的帖子

有具体的函数,是可以根据函数修改参数的

sun1993 发表于 2009-8-25 13:44

回复 9楼 ChaChing 的帖子

不好意思,不是您水平有限,是我没表述清楚
我自己再想想,想明白了再报告大家

sogooda 发表于 2009-8-25 18:51

回复 楼主 sun1993 的帖子

f函数应该是你自己编写的吧?你只要修改你的程序,使它可以接受向量输入就可以把所有的循环都去掉了。
页: [1]
查看完整版本: 请教for循环的优化