Подтвердить что ты не робот

Почему MATLAB save() дважды вызывает saveobj()?

Я определяю объект 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... найти их ответ ниже: -).

4b9b3361

Ответ 1

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

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

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