主要内容

matfile

访问和更改mat文件中的变量,而无需将文件加载到内存中

描述

使用MAT-file对象访问和更改mat文件中的变量,而无需将该文件加载到内存中。您可以加载或保存部分变量。使用MAT-file对象部分加载和保存变量所需的内存少于负载而且保存命令。

创建

描述

例子

matObj= matfile (文件名创建一个matlab.io.MatFile对象连接到指定的mat文件文件名

MAT-file对象允许您直接访问和更改mat文件中的变量,而不必将变量加载到内存中。

例子

matObj= matfile (文件名“可写”,isWritable启用或禁用对文件的写访问。指定isWritable作为真正的

输入参数

全部展开

mat文件的名称,指定为字符向量或字符串标量。

  • 文件名可以包含完整路径或部分路径;否则,matfile在MATLAB中搜索文件®搜索路径。

  • 如果文件名不包括扩展,matfile附加.mat

  • 如果文件不存在,matfile在对变量的第一次赋值时创建一个Version 7.3 mat文件。

启用写访问,指定为真正的.默认值为真正的对于新文件,对于现有文件。

  • 真正的-启用MAT-file对象对MAT-file的写访问。如果文件为只读,请使用命令修改系统权限fileattrib函数。

  • —禁用MAT-file对象对MAT-file的写访问。

属性

全部展开

访问MAT-File对象属性

使用语法访问MAT-file对象属性对象名. properties。PropertyName,在那里PropertyName属性的名称。例如,您可以访问与MAT-file对象连接的MAT-file的源文件路径mObj使用语法mObj.Properties.Source

文件路径,作为包含mat文件的完全限定路径的字符向量返回。

MAT-file对象的写访问状态,返回为任意一个真正的

  • 真正的- MAT-file对象对MAT-file有写权限。

  • - MAT-file对象对MAT-file具有只读访问权限。

对象的功能

大小

在mat文件中获取变量的数组尺寸

allDims = size(matObj,变量)返回对应的文件中指定变量的每个维度的大小matObj.输出allDims是一个1——- - - - - -向量,M = ndims(变量)

[dim1,…,dimN] = size(matObj,variable)在单独的输出变量中返回每个维度的大小dim1,…,dimN

selectedDim = size(matObj,variable,dim)返回指定维度的大小。

注意:不要打电话大小使用语法大小(matObj.variable).该语法将变量的全部内容加载到内存中。对于非常大的变量,此加载操作将导致内存不足错误。

获取mat文件中的变量列表

varlist = who(matObj)按字母顺序列出mat文件中关联的所有变量matObj.可选地,返回单元格数组中的列表varlist

varlist = who(matObj,变量)列出指定的变量。

获取mat文件中的变量列表,具有大小和类型

details = whos(matObj)返回mat文件中与之关联的所有变量的信息matObj

details = whos(matObj,VarName1,…,VarNameN)返回关于指定变量的信息。

例子

全部折叠

为文件创建一个MAT-file对象。的matfile函数构造一个matlab.io.MatFile对象,对应于MAT-File。

matObj = matfile(“myFile.mat”

启用对mat文件的写访问,myFile.mat,当您创建对象时。

M = matfile(“myFile.mat”可写的,真正的);

属性,也可以在创建MAT-file对象后启用写访问可写的财产。

m.s ates . writable = true;

打开示例mat文件topography.mat.读取变量威尼斯平底渔船从文件中使用MAT-fie对象。MATLAB®加载整个变量,威尼斯平底渔船,进入工作区。

M = matfile(“topography.mat”);Topo = m.topo;

版权所有The MathWorks, Inc.

创建一个包含数组的MAT-file,然后使用MAT-file对象向该文件添加另一个数组。

通过生成一个20 × 20的数组创建一个MAT文件,x,并保存到myFile.mat

X =魔术(20);保存(“myFile.mat”“x”);

创建一个连接到现有MAT-file的MAT-file对象。通过设置启用写访问可写的真正的

M = matfile(“myFile.mat”可写的,真正的);

生成另一个15乘15的数组,y.保存y使用MAT-file对象添加到MAT-file。使用类似于访问结构数组字段的点表示法在mat文件中指定变量。MATLAB®添加了一个名为y到文件。

Y =魔术(15);M.y = y;

显示mat文件中存储的所有变量,myFile.mat

谁(“- file”“myFile.mat”
名称大小字节类属性x 20x20 3200 double y 15x15 1800 double

使用MAT-file对象访问MAT-file中变量的特定部分。例如,您可以将数据保存到mat文件中变量的子集,或将变量的子集读入MATLAB®工作区。

将数据保存到变量的子集y在文件中myFile2.mat使用MAT-file对象。首先,创建MAT-file对象

M = matfile(“myFile2.mat”);

接下来,创建并保存一个数组到变量y的一部分。在mat文件中使用点表示法指定变量,类似于访问结构数组的字段。的元素中插入20 × 20的数组y由索引指定(81:100 81:100)

M.y(81:100,81:100) =魔术(20);

读取数组的子集y输入一个新的工作空间变量,z.MATLAB®读取由索引指定的10 × 10子数组(85:94 85:94)从mat文件到工作区变量z

Z = m.y(85:94,85:94);

确定一个变量的大小,然后计算每个列的平均值。

打开mat文件示例,stocks.mat

文件名=“stocks.mat”;M = matfile(文件名);

确定变量的大小,股票,在stocks.mat

[nrows,ncols] = size(m,“股票”);

计算变量每一列的平均值股票

Avgs = 0 (1,ncols);I = 1:ncols avgs(I) = mean(m.stocks(:, I));结束

限制

  • 通过索引访问mat文件中的部分变量时:

    • 不支持线性索引。金宝app必须为所有维度指定索引。

    • 不支持将复杂值赋给实数组的索引部分。金宝app

  • 对于MAT-file中的稀疏数组,MAT-file对象:

    • 金宝app支持通过索引读取稀疏数组的子集。

    • 不支持通过索引向稀金宝app疏数组的子集写入(赋值)。

  • MAT-file对象不支持索引到:金宝app

    • 表的变量

    • 单元阵列中的单元

    • 字符串数组

    • 结构数组字段

    • 用户定义的类

  • 属性的函数句柄不支持求值金宝app输出。例如,如果你的mat文件包含函数句柄myfunc,语法m.myfunc ()尝试索引到函数句柄中,但不调用该函数。

  • 当保存句柄对象时,MATLAB保存对象的副本,而不是句柄的副本。因此,在保存对象的工作空间中通过对象的句柄修改对象并不会修改保存的句柄对象。

提示

  • 高效的部分加载和保存需要Version 7.3 mat文件。要创建Version 7.3 mat文件,请调用保存函数与“-v7.3”选择。例如,转换现有的mat文件durer.mat到版本7.3,调用:

    负载(“durer.mat”);保存(“mycopy_durer.mat”“-v7.3”);

  • 使用结束关键字作为索引的一部分导致MATLAB将整个变量加载到内存中。对于非常大的变量,此加载操作将导致内存错误。而不是使用结束,确定一个变量的范围大小方法:

    sizeMyVar = size(matObj,“myvar#”

版本历史

R2006a之前介绍