Работа с большим CSV-файлом в MATLAB - PullRequest
5 голосов
/ 18 апреля 2011

Мне нужно работать с большим CSV-файлом, до 2 ГБ.Точнее говоря, я должен загрузить все эти данные в базу данных mySQL, но прежде чем мне придется сделать несколько вычислений по этому поводу, я должен сделать все это в MATLAB (мой супервайзер хочет сделать в MATLAB, потому что он знаком только сMATLAB :().

Есть идеи, как мне справиться с этими большими файлами?

Ответы [ 2 ]

9 голосов
/ 18 апреля 2011

Вам, вероятно, следует использовать textcan для считывания данных в виде кусков и последующей обработки.Это, вероятно, будет более эффективным, чем чтение одной строки за раз.Например, если у вас есть 3 столбца данных, вы можете сделать:

filename = 'fname.csv';
[fh, errMsg] = fopen( filename, 'rt' );
if fh == -1, error( 'couldn''t open file: %s: %s', filename, errMsg ); end
N  = 100; % read 100 rows at a time
while ~feof( fh )
  c  = textscan( fh, '%f %f %f', N, 'Delimiter', ',' );
  doStuff(c);
end

РЕДАКТИРОВАТЬ

В наши дни (R2014b и более поздние версии) проще и, вероятно, эффективнее использовать datastore.

0 голосов
/ 18 апреля 2011

Есть хороший совет по обработке больших наборов данных в MATLAB в этом элементе обмена файлами .

К конкретным темам относятся:
* Понимание максимального размера массива ирабочее пространство в MATLAB
* Использование недокументированных функций для отображения доступной памяти в MATLAB
* Настройка переключателя 3 ГБ в Windows XP для увеличения памяти на 1 ГБ для MATLAB
* Использование текстового сканирования для чтения больших текстовых файлов и памятифункция отображения для чтения больших двоичных файлов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...