为什么MATLAB save()调用saveobj()两次?

Jon*_*erg 10 matlab save

我定义了一个MATLAB对象class_save_test:

classdef class_save_test 
    methods
        function b=saveobj(a)
            fprintf('saveobj called.\n');
            b=a;
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

当我尝试保存它时:

j=class_save_test
save('delme1.mat','j')
Run Code Online (Sandbox Code Playgroud)

我得到了输出

saveobj called.
saveobj called.
Run Code Online (Sandbox Code Playgroud)

为什么叫两次?我发现这个地方的人有同样的问题,但没有答案:-(.我用Matlab 7.11.0(R2010b中).

更新:我已向Mathworks提交了支持请求...请在下面找到答案:-).

Jon*_*erg 8

根据MathWorks技术支持:

我们当前的保存(pre-HDF5)MAT实现要求我们在实际保存数据之前计算磁盘上数据的大小,这导致我们两次完成保存过程.HDF5格式不会发生这种情况.这样做save('delme1.mat','j','-v7.3')只会显示一次消息.

我已将我的首选项(文件/首选项/常规/ MAT文件)更改为"MATLAB 7.3或更高版本",因此现在save('keepme.mat','j')适用于我:-).