[运算]将txt读成矩阵, 遇到out of memory的问题

楼主: sacredluv (哔Be)   2014-11-26 15:07:05
我有一个大小为34.8G的txt档, 里面都是0.XXXXXX 的六位小数点数值, 当初在写这份档
案的时候, 是在matlab下使用dlmwrite('data.txt', A, '-append' ), 慢慢将每一条向
量A写入的。
但我利用dlmread('data.txt')来读入矩阵时, 约莫读了一个小时半后, 出现了错误讯息:
Error using dlmread (line 139)
Out of memory. Type HELP MEMORY for your options.
本想打入指令memory来看看内存状况, 却出现
Error using memory
Function MEMORY is not available on this platform.
可能因为我的作业系统是Ubuntu吧!
然后load('data.txt')则是出现:
Error using load
Number of columns on line 97 of ASCII file
/media/Action/data.txt must be the same as previous lines.
我也使用过importdata('data.txt'), 可是跑了一阵子后, 整个matlab就被killed, 感觉
是超出可使用的memory, 被OS杀掉。
后来想一想, 我的memory有32G, 而档案却有34.8G, 要把这么大一个矩阵读入是否根本不
可行? 若可行的话, 有什么做法呢?
(补充一下,此矩阵接下来需要拿来做k-means)
作者: s15512207 (MarySai)   2014-11-26 15:59:00
先切档再读?
作者: sunev (Veritas)   2014-11-26 16:25:00
推楼上,你的档案是ASCII格式,读进来后会小很多。
作者: mp19990920 (郝渴连)   2014-11-26 16:40:00
.... 一次读 34G 的档案 !!!
楼主: sacredluv (哔Be)   2014-11-27 14:11:00
请问切档再读是一个个把档案读成矩阵,然后再合并矩阵吗

Links booklink

Contact Us: admin [ a t ] ucptt.com