使用 While 循环将大文本文件读入 MATLAB
Read Large Text File with a While Loop into MATLAB
我正在尝试将一个 3 GB 的大型文本文件读入 MATLAB,该文件由带名称的 header 和分隔符 space 组织(见下文 fruit.txt)但是,唯一需要的数据是葡萄列。由于它是一个巨大的文件,我使用下面的循环只将一列读入 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 并指定一个 header 行并且您只需要第 2 列:
readmatrix(filename, 'FileType','text', 'Delimiter', delimiter, 'NumHeaderLines', 1, 'Range', 'B:B');
我正在尝试将一个 3 GB 的大型文本文件读入 MATLAB,该文件由带名称的 header 和分隔符 space 组织(见下文 fruit.txt)但是,唯一需要的数据是葡萄列。由于它是一个巨大的文件,我使用下面的循环只将一列读入 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 并指定一个 header 行并且您只需要第 2 列:
readmatrix(filename, 'FileType','text', 'Delimiter', delimiter, 'NumHeaderLines', 1, 'Range', 'B:B');