Эффективно реорганизовать или ссылаться на большие данные в MATLAB - PullRequest
1 голос
/ 15 марта 2011

В настоящее время я добавляю большие (десятки ГБ) файлы данных в Matlab, используя memmapfile.Файл, в котором я читаю, состоит из нескольких полей, описывающих данные, которые следуют за ним.Вот пример того, как мой формат может выглядеть:

m.format = { 'uint8' [1 1024] 'metadata'; ...
'uint8' [1 500000] 'mydata' };
m.repeat = 10000;

Итак, я получаю структуру m, в которой один образец данных рассматривается следующим образом:

single_element = m.data(745).mydata(26);

Я хочурассматривать эти данные как матрицу из примера 10 000 x 500 000.Индексирование отдельных предметов таким способом не сложно, хотя и несколько громоздко.Моя настоящая проблема возникает, когда я хочу получить доступ, например, к 4-му столбцу каждой строки.MATLAB не разрешит следующее:

single_column = m.data(:).mydata(4);

Я мог бы написать цикл, чтобы медленно объединить все это в реальную матрицу (кстати, мне не нужны метаданные), но для данных такого большого размераТрудно переоценить, насколько это будет слишком медленно ... не говоря уже о том, что это удвоит требуемую память.Есть идеи?

1 Ответ

0 голосов
/ 15 марта 2011

Просто отобразите это в матрицу:

m.format = { 'uint8' [1024 500000] 'x' };

m.Data(1).x будет вашей матрицей данных.

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