Как прочитать несколько файлов в один массив ячеек?

У меня есть большой набор данных, разделенный на 5 файлов (каждый из которых имеет 15000 атрибутов, первый файл содержит заголовок (имена атрибутов) и 9999 записей, а остальные 4 содержат 10000 записей).

Используя textscan, я создал 5 массивов ячеек, которые необходимо объединить, и не знаю, подходит ли этот подход, или было бы лучше напрямую прочитать все 5 файлов в один массив ячеек. В любом случае, я был бы признателен, если бы кто-нибудь из вас мог показать, как объединить несколько массивов ячеек в один массив ячеек или прочитать несколько текстовых файлов в один массив ячеек.

Благодарю вас!


person Niko Gamulin    schedule 11.08.2010    source источник
comment
Если я правильно понимаю ваше описание ваших файлов, каждый из них содержит массив данных размером 10000 на 15000. Это правильно? Это означало бы, что один массив (при условии, что он имеет тип double) будет занимать около 1,2 ГБ. Это вызовет у вас некоторые проблемы с памятью.   -  person gnovice    schedule 11.08.2010
comment
@gnovice: хороший улов. Однако ОП может запускать это на хорошем вычислительном сервере.   -  person Jonas    schedule 11.08.2010


Ответы (2)


Если вы не хотите использовать магию Java, вы не можете напрямую читать несколько файлов в один массив.

Однако, как только вы получили массивы ячеек, их будет легко объединить: если предположить, что в каждом массиве ячеек одинаковое количество столбцов, вы можете объединить их следующим образом:

finalCell = [cell1;cell2;cell3;cell4;cell5];
person Jonas    schedule 11.08.2010

Расширяя ответ Джонаса, если память вызывает беспокойство, вы можете комбинировать их при чтении файлов, чтобы избежать массивов ячеек 5 x 15000 x 10000 + 1 15000 x 50000.

finalCell = textscan (fid_1, 'формат');

финальная ячейка = [финальная ячейка; textscan(fid_2,'формат')];

финальная ячейка = [финальная ячейка; textscan(fid_3,'формат')];

финальная ячейка = [финальная ячейка; textscan(fid_4,'формат')];

финальная ячейка = [финальная ячейка; textscan(fid_5,'формат')];

С уважением,

Адам

person Adam Lewis    schedule 12.08.2010
comment
этот код возвращает массив ячеек размером 5 x 15000. Я хотел бы получить массив ячеек размером 50000 x 15000. - person Niko Gamulin; 13.08.2010