В настоящее время я работаю над проектом, который создает и требует больше данных, чем может обрабатывать моя оперативная память. Поэтому я сохраняю свои данные как .mat-файлы для обработки. Однако, когда я пытаюсь сохранить свою трехмерную матрицуuint8
в качестве файла и загрузить ее снова (используя функции save
и load
), я не получаю те же данные, что и раньше. Вызов whos
Фактически, кажется, загружается -by- struct. Я просматривал документы save
и load
MATLAB, но, похоже, не понимаю, как я могу добиться того, что хочу.Сохранение матрицы, но загрузка структуры в MATLAB?
Сейчас я работаю на R2014b MATLAB с 8GB RAM. Точная whos
выхода к переменному я пытаюсь сохранить и нагрузки, приведенные ниже:
я должен быть добавление опции к save
и load
функции? Я понимаю, что есть возможность указать точность хранящихся номеров, но не их тип и структуру данных. Мои вызовы для функций ниже:
Где я сохранить файл
for i = 1:N
for j = times(i,1):times(i,2)
frame = vreader.read(j);
temp_bead(j,1:mod_height,:) = frame(1:mod_height,:);
dispstat(sprintf('Processing Bead %d/%d',i,N),'timestamp');
end
% Copying the matrix data into a new matrix
matrixname = strcat('UncroppedBeadMatrix',int2str(i));
dir = strcat(pwd,foldername,'\',matrixname);
whos('temp_bead');
save(dir, 'temp_bead','-double');
end
Где загрузить мой файл
foldername = '\UncroppedBeadData';
matrixname = strcat(pwd,foldername,'\UncroppedBeadMatrix',int2str(i),'.mat');
uncropped_matrix = load(matrixname);
Пожалуйста, не стесняйтесь задавать любые вопросы, которые могут уточните мой вопрос.
Я бы попытался отделить 3D-матрицу от сохранения памяти из памяти. Они могут быть несвязанными.Вот что я пробовал: «X = randi (10,10,10,10, 'uint8') save X удалить все загрузить X", и я вернул 3D-матрицу (а не структуру). Возможно, попробуйте это, а также попытайтесь сохранить большую 2D-матрицу и проверьте, есть ли у вас такая же проблема, как большая трехмерная матрица. Кроме того, разделяя измерения, с которыми вы имеете дело, и ваши пределы RAM могут помочь кому-то еще попытаться воспроизвести это. – akamath
@akamath просто разделил размеры переменной и спецификации моего компьютера. Я попробую ваше предыдущее предложение позже позже. –
@SharanDuggirala вы должны добавить строку кода, в которой вы вызываете 'save' и где вы вызываете' load' ... – Dan