我在Matlab中使用相同的代码,使用两台不同的计算机分析相同的数据。两者都是Win 7 64位。 Matlabs都是2014年的版本。代码完成运行后,我使用save命令保存变量,并输出.mat文件。
这些文件可能有两种截然不同的内存大小吗?就像一个是170 MB,另一个是2.4 GB?这是荒谬的,因为当我在matlab中检查变量时,它们最多可以加起来为1.5 GB。这可能是什么原因?
保存到.mat文件是否会压缩变量(仍然使用常规的.mat扩展名)?我认为这样做是因为当我检查各个变量时,它们加起来大约为1.5 GB。
那么为什么一个输出较小的文件大小,而另一个输出那么大呢?
答案 0 :(得分:3)
最近版本的Mat是HDF5,其中包括gzip压缩。可能在一台PC上,默认的mat格式更改为不支持压缩的旧版本。尝试保存指定版本,然后两台PC应该产生相同的大小。
答案 1 :(得分:1)
我基于以下stackoverflow线程找到了这个的原因:MATLAB: Differences between .mat versions
显然其中一台计算机使用的是-v7格式,它可以生成更小的文件。 - v7.3只是显着膨胀文件。但是我认为这很讽刺,因为-v7.3可以保存大于2 GB的文件,这意味着它们在保存在.mat文件中时会大得多。
无论如何this link非常有用。
更新:
我实现了上面链接中提到的序列化,它增加了文件大小。在我的情况下,最好的选择是使用-v7格式,因为它提供最小的文件大小,并且还能够保存我经常使用的结构和单元阵列。