2015-11-02 3 views
1

У меня есть 260 ГБ данных на основе агента Моделирование NetLogo. Данные уже подготовлены таким образом, что его можно эффективно использовать для визуализации и анализа. Данные в настоящее время разделен на .mat файлы, каждый из которых содержит 4-мерный массив, с размеромРабота с большими многомерными массивами в MATLAB

270 x 2502 x 9 x 50 

При загрузке, один массив использует 2,26 Гб памяти. Это занимает около 5 секунд. Всего файлов более 100. До сих пор мой подход состоял в том, чтобы перебрать файлы .mat, использовать load, использовать данные (например, нарисовать кривую), использовать clearvars и продолжить со следующим файлом.

Излишне говорить, что это наивный подход, требующий слишком много времени. datastore не является вариантом, так как у меня есть 4-мерные данные и файлы .mat. Есть ли другой способ более эффективно справиться с этой ситуацией? В большинстве случаев я использую только небольшой набор этих массивов, например. один размер фиксированный:

A(:, :, 1, :) 
+0

['memmapfile'] (https://uk.mathworks.com/help/matlab/ref/memmapfile.html), может быть? Хотя вам все равно нужно найти способ создания файла без исчерпания ОЗУ. – IKavanagh

+0

Как сохранить данные в необработанный двоичный файл (вместо файла 'mat'), тогда вы можете прочитать только часть, которая вам нужна, используя' fread' и 'fseek'. Вы можете написать обертку, которая поможет вам загружать только нужные вам измерения. –

+0

посмотреть формат файла hdf5, иногда работает очень хорошо для больших данных. –

ответ

2

Вы можете использовать matfile функции для загрузки подмножества matfile в память без загрузки всего файла. Поскольку .mat является подмножеством формата HDF5 для большинства целей, их использование (почти) эквивалентно. Однако из-за безумных матов Matlab devs, а также в зависимости от вашего рабочего процесса не гарантируется, что вы будете быстрее, чем все, что вы делаете сейчас.

+0

@HennadiiMedan Как вы сказали, это не самое быстрое решение, но более приемлемым, чем то, что было предложено в комментариях к моему вопросу. – sfat

Смежные вопросы