主要内容

matfile

在不将文件加载到内存的情况下访问和更改Mat文件中的变量

描述

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

创建

描述

例子

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

Mat-File对象允许您直接在MAT文件中访问和更改变量,而无需将变量加载到内存中。

例子

matObj= matfile (文件名,'可写',isWritable启用或禁用对文件的写访问权限。指定isWritable作为真的或者

输入参数

展开全部

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

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

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

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

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

  • 真的- 从Mat文件对象启用对MAT文件的写入访问。如果文件是只读的,请使用该文件更改系统权限fileattrib函数。

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

属性

展开全部

访问MAT-File对象属性

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

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

编写MAT文件对象的访问状态,返回真的或者

  • 真的- MAT文件对象对MAT文件具有写入访问权限。

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

对象的功能

大小

获取mat文件中变量的数组维数

alldims = size(matobj,变量)返回对应的文件中指定变量的每个维度的大小matObj.输出alldims.是一个1-经过-矢量,在那里m = ndims(变量)

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

selectedDim =大小(matObj、变量暗)返回指定维度的大小。

注意:不叫大小用语法尺寸(matobj.variable).此语法将变量的整个内容加载到内存中。对于非常大的变量,这个加载操作将导致内存不足错误。

WHO

获取mat文件中的变量列表

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

varlist =谁(matobj,变量)列出指定的变量。

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

细节= Whos(Matobj)返回关于与之关联的MAT文件中所有变量的信息matObj

细节= Whos(Matobj,Varname1,...,varnamen)返回有关指定变量的信息。

例子

全部收缩

为文件创建一个Mat文件对象。这matfile构造一个函数matlab.io.matfile.对象对应于MAT-File。

matObj = matfile ('myfile.mat'

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

m = matfile('myfile.mat'可写的,真正的);

或者,您可以在创建MAT-file对象后通过设置可写的财产。

m.properties.wrable = true;

打开示例mat文件topography.mat.阅读变量顶部从使用mat-fie对象的文件。MATLAB®加载整个变量,顶部,进入工作空间。

m = matfile('topography.mat');topo = m.topo;

版权所有2012 Mathworks,Inc。

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

通过生成20×20阵列来创建垫文件,x,并将其保存到myFile.mat

x =魔法(20);保存('myfile.mat''X');

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

m = matfile('myfile.mat'可写的,真正的);

生成另一个15 × 15的数组,y.保存y使用Mat-File对象到Mat文件。使用类似于Artuction Arrays的字段的点表示法指定Mat文件中的变量。Matlab®添加了命名的变量y到文件。

y =魔术(15);m.y = y;

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

谁(“- file”'myfile.mat'
名称大小字节类属性x20x20 3200 double y 15x15 1800 double

使用MAT文件对象访问Mat文件中变量的特定部分。例如,您可以将数据保存到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)从垫文件到工作区变量z

Z = M.Y(85:94,85:94);

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

打开示例mat文件,stocks.mat

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

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

[nrows, ncols] =大小(m,'股票');

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

avgs =零(1,ncols);i = 1:ncols avgs(i)=均值(m.stocks(:,i));结束

限制

  • 通过索引访问Mat-Files中的变量部分时:

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

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

  • 对于Mat文件中的稀疏阵列,Mat-File对象:

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

    • 不支持通过索引将(金宝app将值分配值)写入稀疏阵列的子集。

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

    • 变量的表

    • 细胞阵列的细胞

    • 字符串数组

    • 结构阵列的字段

    • 用户定义的类

  • Mat-File对象不支持使用该函数处理金宝app输出。例如,如果你的mat文件包含函数句柄myfunc,语法m.myfunc ()尝试在函数句柄中建立索引,但不调用函数。

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

尖端

  • 高效的部分加载和保存需要版本7.3的mat文件。要创建7.3版本的mat文件,请调用保存用来的功能'-v7.3'选项。例如,要转换名为的现有MAT文件durer.mat到版本7.3,调用:

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

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

    sizeMyVar =大小(matObj,'myvar'
在R2006A之前介绍