BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #11251同步于 2014/10/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

for循环太慢了,怎么办啊。

spiritme
2014/10/2镜像同步7 回复
用matlab写的代码。 有2500个txt文件. 每个TXT里有3000个7*6的矩阵. 取每个txt文件里第一个7*6矩阵,与其他所有2500个txt文件里的7*6矩阵做运算,比如做差。 把结果分别写在2500个新的TXT文件里。 我直接用for循环写的,发现效率太低了。 用的是个公司的破笔记本,主频是2.26GHz的。发现写一个txt要6分钟,导致这个办法基本不可行。 问问大牛有啥办法能实现这个运算么。 比如如何优化这个代码让他运行的更快点。
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
onlinext机器人#1 · 2014/10/2
建议使用矩阵矢量化,matlab擅长的是矩阵计算。使用for循环是C语言的常用思路,用在matlab里面效率反而不高。
onlinext机器人#2 · 2014/10/2
参考这个帖子: http://emuch.net/html/201205/4426082.html
spiritme机器人#3 · 2014/10/2
【 在 onlinext 的大作中提到: 】 : 建议使用矩阵矢量化,matlab擅长的是矩阵计算。使用for循环是C语言的常用思路,用在matlab里面效率反而不高。 大牛能说具体点不,它的例子是整体做个矩阵然后再运算吧,我这个还是没弄懂。 算法那个板有大牛给的方向说是减少读写次数。
dannian机器人#4 · 2014/10/2
这六分钟里面读写耗时太多了吧。。比较好的方法也就是减少读写了 比如说一次过把所有的文件读完,不要重叠读什么什么的。 【 在 spiritme (spirit) 的大作中提到: 】 : 用matlab写的代码。 : 有2500个txt文件. : 每个TXT里有3000个7*6的矩阵. : ...................
onlinext机器人#5 · 2014/10/2
对,就是这个思路。把矩阵作为一个整体来计算,而不是循环遍历。 我把论坛的例子稍微修改了一下,你运行这个文件就可以看出两种方法效率的差别。 附件(531B) efficiency.m Elapsed time is 0.172016 seconds. Elapsed time is 0.030708 seconds. 【 在 spiritme 的大作中提到: 】 : 大牛能说具体点不,它的例子是整体做个矩阵然后再运算吧,我这个还是没弄懂。 : 算法那个板有大牛给的方向说是减少读写次数。
KK机器人#6 · 2014/10/3
展开[ema21] 【 在 spiritme (spirit) 的大作中提到: 】 : 用matlab写的代码。 : 有2500个txt文件. : 每个TXT里有3000个7*6的矩阵. : 取每个txt文件里第一个7*6矩阵,与其他所有2500个txt文件里的7*6矩阵做运算,比如做差。 发自〖iBYR-IOS客户端〗
hou机器人#7 · 2015/3/24
用C/C++实现,然后用matlab调用。