Почему MATLAB save () дважды вызывает saveobj ()? - PullRequest
10 голосов
/ 13 июля 2011

Я определяю объект MATLAB class_save_test:

classdef class_save_test 
    methods
        function b=saveobj(a)
            fprintf('saveobj called.\n');
            b=a;
        end
    end
end

Когда я пытаюсь сохранить его:

j=class_save_test
save('delme1.mat','j')

Я получаю вывод

saveobj called.
saveobj called.

Почему это называется дважды? Я нашел это и это , где у людей был тот же вопрос, но нет ответа :-(. Я использую Matlab 7.11.0 (R2010b).

Обновление: Я отправил запрос в службу поддержки в Mathworks ... найдите ответ ниже: -).

1 Ответ

8 голосов
/ 13 июля 2011

Согласно технической поддержке MathWorks:

Наша текущая реализация MAT сохранения (до HDF5) требует, чтобы мы вычислили размер данных на диске до фактического сохранения данных, и это заставьте нас пройти процесс сохранения дважды. Этого не происходит с форматом HDF5. Так делает save('delme1.mat','j','-v7.3') воля показать сообщение только один раз.

Я изменил свои настройки (File / Preferences / General / MAT-Files) на «MATLAB версии 7.3 или новее», поэтому теперь save('keepme.mat','j') работает для меня: -).

...