0

У меня проблема с недостаточной памятью (ОЗУ), когда я читаю метрологические данные (файлы 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 

Спасибо!

+2

Очевидно, вы не можете загрузить ** 35 ГБ ** данных в свою память! Вам нужно будет найти способ выборочной загрузки данных для ваших вычислений, а затем удалить их впоследствии, чтобы освободить место для большего количества данных. Вероятно, вам не нужно _all_ данных сразу для ваших вычислений. – buzjwa

+0

это не так очевидно. размер файла на диске не должен соответствовать размеру памяти в Matlab. используя единицу, похоже, что размер набора данных уже сокращен наполовину, что, вероятно, является причиной того, что он останавливается на уровне 70%, а не менее 50%, но если вам нужно больше данных, чем может поместиться в память, MW представила http: // se .mathworks.com/help/matlab/datastore.html –

+0

Спасибо, ребята! Каждая ячейка представляет собой систему координат, 657x665, т. Е. 436905 элементов, и мне нужны те для дальнейшего анализа. Я проверю хранилище данных, но я не вижу, как я могу применить его с первого взгляда - я попробую! –

ответ

0

Команда matfile может работать непосредственно в файловой системе. Он хранит все данные, которые вы вставляете непосредственно в файловую систему. Это будет медленным, но это возможно.