Я использую Matlab и выполняю некоторые оценки, а затем хочу сохранить структуру, в которой сохраняются результаты, для будущего использования.
Проблема: Первое, что я заметил, было то, что выполнениеЭто длилось слишком долго, может быть, 8 часов, потом, когда я хотел сохранить структуру, может быть, еще 2 часа.После нескольких блокировок и повторного выполнения процесса мне наконец удалось сохранить копию данных.Что меня смущает, так это то, что размер файла составляет 150 ГБ.
Процесс: Структура кода выглядит следующим образом: он перебирает .csv файлов в папке (50 000)он считывает их как файлы формата csv, извлекает необходимые столбцы и вычисляет данные.
Мое представление: Я полагаю, что вся итерация и извлечение данных из каждого файла занимает много кеша, чтоможет замедлить процесс, со временем !?Но я до сих пор не понимаю, почему окончательный файл .mat занимает так много памяти, так как в прошлом для тех же данных, но разных параметров, ему не нужно было много места для сохранения результатов.
Вопрос / с: Можно ли уменьшить размер конечного файла, не влияя на результаты?Я основываю этот вопрос на предположении, что Matlab, возможно, сохраняет дополнительную информацию из процесса? Схема кода:
clc; close all; clear all; fclose('all');
result = struct('values_a', [], 'other', []);
counter = 1;
for i=1:length(dataNames)
try
structRead = ezread(nameOfFile, ',');
values_a = structRead.timestamp;
for j=1:length(values_a)
if(strcmp(values_a(j),'N'))
if(j==1)
values_a(j) = values_a(j+1);
elseif (j==length(values_a))
values_a(j) = values_a(j-1);
else
values_a(j) = (values_a(j-1)+values_a(j+1))/2;
end
end
result(counter).values_a(j) = values_a(j);
end
counter=counter+1;
catch
counterFailed= counterFailed+1;
end
end
end
save(path2save,'result','-v7.3');