matfile
访问和更改 MAT 文件中的变量,而不必将文件加载到内存中
说明
使用 MAT 文件对象来访问和更改 MAT 文件中的变量,而不必将文件加载到内存中。您可以加载或保存部分变量。与 load
和 save
命令相比,使用 MAT 文件对象部分加载和保存变量所需的内存较少。
创建对象
描述
创建 matObj
= matfile(filename
)matlab.io.MatFile
对象,该对象连接到 filename
指定的 MAT 文件。
该 MAT 文件对象允许您直接访问和更改 MAT 文件中的变量,而不必将变量加载到内存中。
启用或禁用对文件的写访问权限。将 matObj
= matfile(filename
,'Writable',isWritable
)isWritable
指定为 true
或 false
。
输入参量
属性
对象函数
size | 获取 MAT 文件中变量的数组维度
注意:不要使用语法 |
who | 获取 MAT 文件中变量的列表
|
whos | 获取 MAT 文件中变量的列表,包含其大小和类型信息
|
示例
局限性
通过索引访问 MAT 文件中的部分变量时:
不支持线性索引。您必须指定所有维度的索引。
不支持将复数值赋给实数数组的索引部分。
对于 MAT 文件中的稀疏数组,MAT 文件对象:
支持通过索引读取稀疏数组的子集。
不支持通过索引对稀疏数组的子集写入(赋值)。
MAT 文件对象不支持对以下项目进行索引:
表变量
元胞数组的元胞
字符串数组
datetime
数组duration
数组结构体数组字段
用户定义的类
MAT 文件对象不支持使用
m
输出计算函数句柄。例如,如果 MAT 文件包含函数句柄myfunc
,则语法m.myfunc()
将会尝试对该函数句柄进行索引,并且不会调用函数。在保存句柄对象时,MATLAB 保存对象的副本,而不是句柄的副本。因此,通过在保存对象的工作区中的对象句柄修改对象不会修改保存的句柄对象。
提示
有效的部分加载和保存要求 7.3 版本 MAT 文件。要创建 7.3 版本 MAT 文件,请使用
'-v7.3'
选项调用save
函数。例如,要将现有的名为durer.mat
的 MAT 文件转换为 7.3 版本,请调用:load('durer.mat'); save('mycopy_durer.mat','-v7.3');
如果在索引中使用
end
关键字,则 MATLAB 会将整个变量都加载到内存中。对于非常大的变量,此加载操作将引发Out
of
Memory
错误。请不要使用end
,而是使用size
方法来确定变量的范围:sizeMyVar = size(matObj,'myVar')
版本历史记录
在 R2011b 中推出