1

我在 Matlab 中有相同的代码,使用两台不同的计算机分析的相同数据。两者都是Win 7 64位。两个 Matlab 都是 2014-a 版本。代码完成运行后,我使用 save 命令保存变量并输出 .mat 文件。

这些文件是否可以有两个非常不同的内存大小?比如一个是 170 MB,另一个是 2.4 GB?这很荒谬,因为当我在 matlab 中检查变量时,它们最多加起来可能是 1.5 GB。这可能是什么原因?

保存到 .mat 文件是否会压缩变量(仍然使用常规的 .mat 扩展名)?我认为确实如此,因为当我检查各个变量时,它们加起来约为 1.5 GB。

那么为什么一个输出较小的文件大小,而另一个输出那么大呢?

4

2 回答 2

3

最近版本中的 Mat 是 HDF5,其中包括 gzip 压缩。可能在一台电脑上,默认的 mat 格式更改为不支持压缩的旧版本。尝试保存指定版本,然后两台 PC 的大小应该相同。

于 2015-02-12T14:24:56.640 回答
0

我根据以下stackoverflow线程找到了原因:MATLAB:.mat版本之间的差异

显然其中一台计算机使用的是 -v7 格式,它生成的文件要小得多。- v7.3 只是显着膨胀文件。但这在我看来具有讽刺意味,因为 -v7.3 可以保存大于 2 GB 的文件,这意味着当保存在 .mat 文件中时它们会大得多。

无论如何,这个链接非常有用。

更新:

我实现了上面链接中提到的序列化,它增加了文件大小。就我而言,最好的选择是使用 -v7 格式,因为它提供了最小的文件大小,并且还能够保存我经常使用的结构和元胞数组。

于 2015-02-12T15:56:03.217 回答