我一直认为这save
将存储与您已经拥有的数字完全相同的数字,其精度已经用于将它们存储在 matlab 中 - 您不会丢失任何东西。唯一的问题可能是磁盘空间消耗(数字太精确?)和 .mat 文件的封闭格式(外部程序无法读取)。如果我只想存储数据并稍后使用 matlab 读取它们,我肯定会使用save
.
save
也可以打印 ascii 数据,但它(as dlmwrite
)仅限于 2D 数组,因此dlmwrite
在您的情况下使用会更好。
另一种解决方案:
tmpM = [size(M), 0, reshape(M, [], 1)];
dlmwrite('filename.txt', tmpM, 'delimiter', '\t', 'precision', '%1.40f');
阅读会有点困难,但只有一点;)
fopen
然后您可以编写自己的函数来使用&将内容写入文件fprintf
(就像这样dlmwrite
做一样) - 您可以控制文件格式的各个方面(包括精度)。
如果我真的关心精度、文件大小和执行时间(这可能不是你的方式),我会做的事情是编写一个 mex 函数,它采用矩阵参数并将其存储在二进制文件中,只需复制来自 matlab 的原始数据缓冲区。它还需要一些数组维度的指示,并且可能是最快的(不确定是否save
还没有做类似的事情)。