У меня проблема с недостаточной памятью (ОЗУ), когда я читаю метрологические данные (файлы GRIB), составляющие 35 ГБ данных, в массив ячеек Matlab.Как работать с массивами ячеек, превышающими объем памяти?
Как я могу обойти ограничения по ОЗУ при загрузке больших наборов данных?
Я попытался предустановить массив ячеек, но это не поможет. Он останавливается при загрузке набора данных на 70%.
Вот FOR-петли, что ошибки:
% нагрузки GRIB файлы
for ii = 1:number_files
waitbar(ii/number_files,h);
file_name = [fname,'\',num2str(ii),'.grb'];
grib_struct = read_grib([file_name],-1);
Temp{ii} = single(grib_struct(1,1).fltarray);
Rad_direct{ii} = single(grib_struct(1,2).fltarray);
Rad_diff{ii} = single(grib_struct(1,3).fltarray);
fclose('all');
end
Спасибо!
Очевидно, вы не можете загрузить ** 35 ГБ ** данных в свою память! Вам нужно будет найти способ выборочной загрузки данных для ваших вычислений, а затем удалить их впоследствии, чтобы освободить место для большего количества данных. Вероятно, вам не нужно _all_ данных сразу для ваших вычислений. – buzjwa
это не так очевидно. размер файла на диске не должен соответствовать размеру памяти в Matlab. используя единицу, похоже, что размер набора данных уже сокращен наполовину, что, вероятно, является причиной того, что он останавливается на уровне 70%, а не менее 50%, но если вам нужно больше данных, чем может поместиться в память, MW представила http: // se .mathworks.com/help/matlab/datastore.html –
Спасибо, ребята! Каждая ячейка представляет собой систему координат, 657x665, т. Е. 436905 элементов, и мне нужны те для дальнейшего анализа. Я проверю хранилище данных, но я не вижу, как я могу применить его с первого взгляда - я попробую! –