【问题标题】:Matlab .mat file savingMatlab .mat 文件保存
【发布时间】:2015-04-13 07:37:28
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您是在使用save 而不使用任何参数(保存整个当前工作区)还是只传递您想要保存的变量...可能某些电脑上的本地工作区包含很多未使用的变量。
  • 是的,我正在保存所有内容。我需要所有的变量。
  • 我的问题是知道当前工作空间中的当前变量在保存命令发生时是否在两台电脑上相同(可能有一些额外的变量,特别是如果代码是脚本而不是函数)。
  • 哦,好的。不,它们是相同的。

标签: matlab save file-format mat-file


【解决方案1】:

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

【讨论】:

  • 我明白了,所以我应该明确指定v8.3(2014a的版本)这是因为我之前安装了2011 Matlab吗?研究 hdf5,有没有办法以这种格式保存工作区变量?或者这是matlab用来“保存”工作区变量的一种方法?此外,如果我们导入数据,是否可以将其保存为 hdf5 格式,以便更快地导入以备将来使用?还是通过 .mat 文件实现的?
  • 当我使用“save file.mat -v8.3”时它不起作用。它给出以下错误:使用保存未知命令选项时出错。
  • 8.3 不是有效版本,请查看您的文档以获取 save。最近版本中的 Mat,我认为从 7.0 开始,是 hdf5。
  • 我明白了。它已经使用最新的格式 v7.3 保存在设置 -> 常规中。我还用 -v7.3 运行了一个命令,mat 文件大小相同:2.4 GB。
  • 另一个例子:我尝试了一个小得多的数据,在一台计算机上它占用 4 MB,在另一台计算机上占用 9 MB。
【解决方案2】:

我根据以下stackoverflow线程找到了原因:MATLAB: Differences between .mat versions

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

反正this link很有用。

更新:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-19
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 2021-08-01
    相关资源
    最近更新 更多