MAT 文件版本
MAT 文件版本概述
MAT 文件是二进制 MATLAB® 文件,用于存储工作区变量。从 MAT 文件版本 4 开始,随后的几个 MAT 文件版本都支持一组增加的功能。MATLAB 版本 R2006b 和更高版本均支持所有的 MAT 文件版本。
默认情况下,所有保存操作都会创建 7 版本的 MAT 文件。唯一的例外是使用 matfile
函数创建新的 MAT 文件时。在这种情况下,默认的 MAT 文件版本是 7.3。
要确定或更改默认 MAT 文件版本,请访问 MAT 文件预设。
在主页选项卡的环境部分,点击 预设项。
选择 MATLAB > 常规 > MAT 文件。
预设适用于 save
函数和保存菜单选项。
MAT 文件的最大大小由您的本机文件系统限定。
下表列出并比较了所有 MAT 文件版本。
MAT 文件版本 | 支持的 MATLAB 发行版 | 支持功能 | 压缩 | 每个变量大小的最大值 | save 函数中 version 参量的值 | 预设选项 |
---|---|---|---|---|---|---|
版本 7.3 | R2006b(版本 7.3)或更高版本 | 保存并加载部分变量,以及版本 7 的所有功能 | 是(默认值) | ≥ 2 GB(64 位计算机) | '-v7.3' | MATLAB 版本 7.3 或更高版本 (save -v7.3) |
版本 7 | R14(版本 7.0)或更高版本 | Unicode® 字符编码。通过编码,可以在使用不同默认字符编码方案的系统之间共享文件,还可以使用版本 6 的所有功能。 | 是(默认值) | 每变量 2^31 字节 | '-v7' | MATLAB 版本 7 或更高版本 (save -v7) |
版本 6 | R8(版本 5)或更高版本 | N 维数组、元胞数组、结构体数组、大于 19 个字符的变量名称,以及版本 4 的所有功能。 | 否 | 每变量 2^31 字节 | '-v6' | MATLAB 版本 5 或更高版本 (save -v6) |
版本 4 | 全部 | 二维 | 否 | 每数组 100,000,000 个元素,每变量 2^31 字节 | '-v4' | 不适用 |
注意
7.3 版本的 MAT 文件使用基于 HDF5 的格式,该格式要求使用一些存储空间开销来描述文件内容。对于元胞数组、结构体数组或可以存储异构数据类型的其他容器,7.3 版本的 MAT 文件有时比版本 7 的 MAT 文件要大。
保存为非默认 MAT 文件版本
当想要执行下列操作时,可保存为默认版本之外的其他 MAT 文件版本:
允许使用较低版本的 MATLAB 访问文件。
利用 7.3 版本的 MAT 文件功能。
通过存储未压缩的数据来降低加载和保存某些文件需要的时间。
通过存储压缩后的数据来降低某些文件的大小。
要保存为默认版本之外的其他 MAT 文件版本,请指定一个 version
作为 save
函数的最后一个输入。例如,要创建名为 myfile.mat
的 6 版本的 MAT 文件,请键入:
save('myfile.mat','-v6')
数据压缩
从 7 版本开始,当将数据写入到 MAT 文件时,MATLAB 会对数据进行压缩以节省存储空间。数据压缩和解压缩会降低所有保存操作和部分加载操作的速度。在大多数情况下,降低文件大小所花费的额外时间是值得的。
在某些情况下,加载压缩数据实际上可能比加载未压缩数据更快。例如,假设数值数组中的数据块分别保存为一个 10 MB 的压缩文件和一个 100 MB 的未压缩文件。加载每个文件的前 10 MB 花费的时间相同。但加载未压缩文件的剩余 90 MB 还要花费加载前 10 MB 的九倍时间,而压缩文件只需要相对较少的解压缩时间即可完成加载。
在下列情况下数据压缩的好处可以忽略:
相对于容器的复杂性,数据量不大。例如,压缩和解压缩简单数值数组比压缩和解压缩相同大小的元胞数组或结构体数组花费的时间更少。若数组产生的未压缩文件大小少于 3 MB, 则对数组进行压缩的好处非常有限,除非您要通过网络传输这些数据。
数据是随机的,没有重复的模式或一致的值。
加快 7.3 版本的 MAT 文件的保存和加载操作的速度
7.3 版本的 MAT 文件使用基于 HDF5 的格式,此格式将数据存储在压缩块中。从 7.3 版本的 MAT 文件中加载变量的一部分所需的时间取决于如何跨一个或多个块存储该部分数据。包含所要加载数据的任何部分的每个块都必须完全解压缩,才能访问这些数据。对数据重新分块可提高加载操作的性能。要对数据重新分块,请使用 HDF5 分发版本所带的 HDF5 命令行工具。