Matlab использует слишком много памяти - PullRequest
0 голосов
/ 03 апреля 2019

Я использую 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...