使用While循环将大文本文件读取到MATLAB中

时间:2019-05-23 13:51:05

标签: matlab io textscan

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

fruit.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

1 个答案:

答案 0 :(得分:3)

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

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