通过While循环将大型文本文件读入MATLAB

通过While循环将大型文本文件读入MATLAB,matlab,io,textscan,Matlab,Io,Textscan,我正试图将一个3 GB的大文本文件读入MATLAB,由一个带有名称的标题和一个空格分隔符(见下面的fruit.txt)组织,但是,所需的唯一数据是Grapes列。因为它是一个巨大的文件,所以我使用下面的一个循环将一列内容读入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 = 'fr

我正试图将一个3 GB的大文本文件读入MATLAB,由一个带有名称的标题和一个空格分隔符(见下面的fruit.txt)组织,但是,所需的唯一数据是Grapes列。因为它是一个巨大的文件,所以我使用下面的一个循环将一列内容读入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

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

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

仅供将来澄清以帮助他人:readmatrix而非matrixread。@Minimalist Doh!是的:我的MATLAB机器不是我打这个的机器。谢谢