У меня есть 260 ГБ данных на основе агента Моделирование NetLogo. Данные уже подготовлены таким образом, что его можно эффективно использовать для визуализации и анализа. Данные в настоящее время разделен на .mat файлы, каждый из которых содержит 4-мерный массив, с размеромРабота с большими многомерными массивами в MATLAB
270 x 2502 x 9 x 50
При загрузке, один массив использует 2,26 Гб памяти. Это занимает около 5 секунд. Всего файлов более 100. До сих пор мой подход состоял в том, чтобы перебрать файлы .mat, использовать load
, использовать данные (например, нарисовать кривую), использовать clearvars
и продолжить со следующим файлом.
Излишне говорить, что это наивный подход, требующий слишком много времени. datastore
не является вариантом, так как у меня есть 4-мерные данные и файлы .mat. Есть ли другой способ более эффективно справиться с этой ситуацией? В большинстве случаев я использую только небольшой набор этих массивов, например. один размер фиксированный:
A(:, :, 1, :)
['memmapfile'] (https://uk.mathworks.com/help/matlab/ref/memmapfile.html), может быть? Хотя вам все равно нужно найти способ создания файла без исчерпания ОЗУ. – IKavanagh
Как сохранить данные в необработанный двоичный файл (вместо файла 'mat'), тогда вы можете прочитать только часть, которая вам нужна, используя' fread' и 'fseek'. Вы можете написать обертку, которая поможет вам загружать только нужные вам измерения. –
посмотреть формат файла hdf5, иногда работает очень хорошо для больших данных. –