Почему 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... найти их ответ ниже: -).
Ответы
Ответ 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')
работает для меня: -).