Читать большой текстовый файл с циклом while в MATLAB - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь прочитать большой 3 ГБ текстовый файл в MATLAB, организованный заголовком с именами и разделителем пробела (см. Ниже fruit.txt). Однако нужны только столбцы Grapes.Поскольку это огромный файл, я использую цикл ниже, чтобы читать только в одном столбце в Matlab.Как я могу прочитать только один столбец данных с помощью цикла ниже?Я должен использовать цикл и предварительный выбор необходимых столбцов, так как размер файла превышает 3 ГБ.

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 Ответ

3 голосов
/ 23 мая 2019

Используйте readmatrix и укажите одну строку заголовка, и вам нужен только столбец 2:

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