У меня проблемы с «перегрузкой данных» при обработке облака точек данных в MATLAB. Вот что я сейчас делаю:
- Я начинаю с файлов необработанных данных, каждый из которых имеет размер ~ 30 МБ каждый.
Затем я выполняю начальную обработку для них, чтобы извлечь n отдельных объектов и удалить отдаленные точки, которые все объединены в структуру 1 x n, testset
, сохраненную в testset.mat
(~ 100Mb).
Пока все хорошо. Теперь все усложняется:
Для каждой точки в каждом объекте в testset
я вычислю одну из нескольких функций, которая в итоге станет матрицей некоторого размера (для каждой точки). Размер матрицы и некоторые другие свойства вычислений являются параметрами вычислений. Я сохраняю эти вычисленные объекты в массиве ячеек размером 1 x n, каждая ячейка которого содержит массив матриц для каждой точки.
Затем я сохраняю этот массив ячеек в файле .mat
, где имя указывает параметры, имя используемых тестовых данных и извлеченные типы функций. Например:
testset_feature_type_A_5x5_0.2x0.2_alpha_3_beta_4.mat
Теперь для каждого из этих файлов я затем продолжу некоторую обработку (используя алгоритм классификации). Опять же, есть больше параметров для установки.
Так что теперь я нахожусь в сложной ситуации, когда каждый последний фрагмент исходных данных проходит некоторый путь, но выбранный путь (и параметры, установленные вдоль этого пути) не связаны с самими данными.
Итак, мой вопрос:
Есть ли лучший способ сделать это? Может ли кто-нибудь, кто имеет опыт работы с большими наборами данных в MATLAB, предложить способ более эффективного и целостного хранения данных и настроек параметров?
В идеале, я мог бы искать определенный фрагмент данных без необходимости использовать регулярные выражения в строках файлов, но есть также стимул хранить отдельно обработанные файлы отдельно, чтобы сохранить системную память при загрузке их в (и помочь предотвратить коррупцию).
Время, затрачиваемое на каждый расчет (около 2 часов), запрещает вычисление данных «на лету».