Сохранение только разницы в пользовательском классе Matlab

Я определил класс Results, который должен содержать результаты определенной операции. Я выполняю эту операцию 10 000 раз и добавляю результат в класс результатов.

Поскольку эта операция выполняется медленно, для предотвращения потери данных я каждый раз сохраняю временные результаты (то есть я вызываю save('tempResults.mat', 'obj') внутри метода в моем классе)

Проблема в том, что я каждый раз пишу с нуля весь класс. Но к 5000-му разу класс уже ~1 Gb большой. Бесполезно записывать 1 Гб данных 10 000 раз, особенно когда в классе изменяется только что-то небольшое.

Как мне это решить? По-видимому, функция сохранения в Matlab не поддерживает это. Я также могу написать пользовательскую функцию сохранения для своего класса (сохраняя отдельно некоторые матрицы и векторы, а затем загружая их снова, когда придет время), но даже для массивов или матриц функция сохранения в Matlab не поддерживает добавление новых строк. Итак, как это реализовать?


person Ant    schedule 10.01.2017    source источник
comment
Может быть, вы можете кэшировать старые результаты внутри объекта и записывать на диск только каждые N раз, когда он изменяется? В противном случае вам придется разработать пользовательскую функцию для поиска свойств, которые изменились, и придумать свой собственный способ отслеживания этих изменений. Я предполагаю структуру данных, аналогичную спецификации патча JSON.   -  person Suever    schedule 10.01.2017
comment
Также вы рассматривали потенциальное использование объекта matfile?   -  person Suever    schedule 10.01.2017
comment
Я тестирую эту проблему с постоянными переменными... просто сохраните свои переменные в постоянной переменной, и это предотвратит подкачку в памяти.   -  person Saeed Masoomi    schedule 10.01.2017
comment
@saeedmasoomi, как постоянная переменная предотвращает потерю данных?   -  person excaza    schedule 10.01.2017
comment
@suever На самом деле я этого не делал, спасибо за вклад. Я постараюсь посмотреть, возможно ли то, что мне нужно, с этим. Но я не думаю, что это такое странное требование, чтобы иметь возможность добавлять строку в матрицу в сохраненном файле, я думал, что это будет более просто :-)   -  person Ant    schedule 11.01.2017