Matlab大型ASCII数据与文本扫描导致数千兆字节变量

时间:2016-10-12 15:38:04

标签: matlab

我有几个ASCII测试数据文件,其大小从100 MB到600 MB不等。两个问题(或者可能是一个掩盖另一个问题):

  1. 根据我的研究,似乎文本可以扼杀物理记忆。如果我尝试加载超过200 MB的任何文件(我的PC中有16 GB的物理内存),我的计算机已完全冻结。
  2. 我今天发现,一旦我成功避免冻结PC并加载了190 MB的数据文件,当我whos编辑导入的变量时,它说可变大小为7.4 GB。事实上,即使在导入完成后,物理记忆仍然保持在接近冰点的90%。
  3. 我尝试了以下内容:

    data = struct;
    count = 0;
    while ~feof(fid)
        count = count+1;
        data_temp = textscan(fid, format, 100000, 'Delimiter', delimiter, 'MultipleDelimsAsOne', true,...
            'EmptyValue' ,NaN, 'ReturnOnError', false);
       data(count).blocks = data_temp;
       clear data_temp
    end
    

    但它似乎没有帮助(也使用了行数)。我尝试了一种没有结构的类似方法,但只依赖于textscan指针。差别不大。

0 个答案:

没有答案