【问题标题】:Read Large Text File with a While Loop into MATLAB将带有 While 循环的大型文本文件读入 MATLAB
【发布时间】:2019-05-23 22:37:23
【问题描述】:

我正在尝试将一个 3 GB 的大文本文件读入 MATLAB,该文件由带有名称的标题和空格分隔符组织(见下文 fruit.txt)但是,唯一需要的数据是葡萄列。由于它是一个巨大的文件,我使用下面的循环仅将一列读入 Matlab。如何使用下面的循环仅读取一列数据?由于文件超过 3 GB 的数据,我必须使用循环和预选所需的列。

水果.txt

Apples Grapes Oranges
3 4 A
4 G 1
6 A 3 
3 4 1
A 6 1
2 2 4

filename = 'fruit.txt'
delimiter = ' ';
formatSpec = '%s%s%s[^\n\r]';

fileID  = fopen(filename, 'r' ) ;
out = {};
k = 0 ;

while ~feof(fileID)
  k = k+1;
  C = textscan(fileID, formatSpec, 'Delimiter', delimiter);

  out{end+1} = Grapes{:,2}; 
end

【问题讨论】:

    标签: matlab io textscan


    【解决方案1】:

    使用 readmatrix 并指定一个标题行并且您只需要第 2 列:

    readmatrix(filename, 'FileType','text', 'Delimiter', delimiter, 'NumHeaderLines', 1, 'Range', 'B:B'); 
    

    【讨论】:

    • 仅供将来澄清以帮助他人:readmatrix 不是 matrixread。
    • @Minimalist Doh!是的:我的 MATLAB 机器不是我输入的机器。谢谢。
    猜你喜欢
    • 2015-07-07
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多