MAT文件打开方法汇总及其他操作

举报
kobesdu 发表于 2022/02/08 10:02:12 2022/02/08
【摘要】 1 MAT文件是MATLAB使用的一种特有的二进制数据文件。MAT文件可以包含一个或者多个MATLAB 变量。MATLAB通常采用MAT文件把工作空间的变量存储在磁盘里,在MAT文件中不仅保存各变量数据本身,而且同时保存变量名以及数据类型等。所以在MATLAB中载入某个MAT文件后,可以在当前MATLAB工作空间完全再现当初保存该MAT 文件时的那些变量。这是其他文件格式所不能的。同样,用户...

1 MAT文件

是MATLAB使用的一种特有的二进制数据文件。MAT文件可以包含一个或者多个MATLAB 变量。MATLAB通常采用MAT文件把工作空间的变量存储在磁盘里,在MAT文件中不仅保存各变量数据本身,而且同时保存变量名以及数据类型等。所以在MATLAB中载入某个MAT文件后,可以在当前MATLAB工作空间完全再现当初保存该MAT 文件时的那些变量。这是其他文件格式所不能的。同样,用户也可以使用MAT文件从MATLAB环境中导出数据。MAT文件提供了一种更简便的机制在不同操作平台之间移动MATLAB数据。

在MATLAB环境中,通常使用load和save两个命令进行 MAT 文件的读和写。在默认情况下,这两个命令以 MAT 文件格式处理文件

2 load 函数的使用

load函数可以从MAT文件中读取数据,例如要读取mymat.dat文件,可以直接执行命令load mymat.dat,因为给出要读取的文件的后缀名是MAT,因此命令则以MAT文件格式读取数据,否则将以文本文件读取数据。命令中的文件名可以包含单引号,也可以不包含,也就是说该函数也可以这样调用:load 'mymat.mat' 。

load 函数还可以指定只读取文件中的某几个变量,只需在文件名之后列出想要读取的变量的变量名就可以了,变量名也可以使用通配符。

比如命令load mymat.mat y*,执行结果就是将文件中所有以y开头的变量读取出来。

load还有一种函数形式的调用方式。这种调用方式就要求文件名必须是字符串,比如要导入mymat.mat文件,那么函数形式的调用必须是s =load('mymat.mat')。

例子:

A = ones(3);

B = eye(3,4);

C = rand(3);

save lx;

clear; clc

这时,变量A B C 均被存入文件lx中。

S = load('lx', 'A', 'B');

A

显示:

A =

1 1 1

1 1 1

1 1 1

3 save函数的使用

save 函数的功能是把当前MATLAB工作空间的一个或多个变量存写到外部文件。在默认情况下,save 函数以MAT格式存写数据。若在命令中直接调用该函数,不带任何参数,执行结果是把MATLAB工作空间的所有变量保存到系统默认的matlab.mat文件中。当然,带上文件名参数,就可以将当前工作空间中的所有变量存写在指定的 MAT文件中。

如果用户需要保存指定的某几个变量,只需在文件名参数后,列出要保存的文件名即可。比如,命令save mymat.matx,y,z执行后的结果就是将当前工作空间中的变量 x,y,z保存到mymat.mat文件中,要求x,y,z是当前工作空间中已经存在的变量。

此外,还有几个与mat文件操作相关的函数

matopen 打开mat文件

matclose 关闭mat文件

magetfp 取得mat文件的c语言句柄

matGetArray 取得一个数组

4 在普通的C/C++程序中读写MAT文件

使用MATLAB 提供的MAT 文件接口函数

在C/C++程序中有两种方式可以读取MAT文件数据。一种是利用MATLAB提供的有关MAT文件的编程接口函数。MATLAB的库函数中包含了MAT文件接口函数库,其中有各种对MAT文件进行读写的函数,都是以mat开头的函数。如表2-10所示。

C语言中的MAT文件读写函数

MAT 函 数

功 能

matOpen

打开 MAT 文件

matClose

关闭 MAT 文件

matGetDir

从 MAT 文件中获得 MATLAB 阵列的列表

matGetFp

获得一个指向MAT 文件的ANSI C 文件指针

matGetVariable

从MAT文件中读取MATLAB阵列

matPutVariable

写MATLAB阵列到MAT文件

matGetNextVariable

从MAT文件中读取下一个MATLAB阵列

matDeleteVariable

从MAT文件中删去下一个MATLAB阵列

matPutVariableAsGlobal

从MATLAB阵列写入到MAT文件中

matGetVariableInfo

从MAT文件中读取MATLAB阵列头信息

matGetNextVariableInfo

从MAT文件中读取下一个MATLAB阵列头信息

5 在C/C++程序中读取MAT文件内容

另外一种在C/C++程序中读写 MAT 文件的方法是根据 MAT 文件结构,以二进制格式在C/C++中读入文件内容,然后解析文件内容,从而获得文件中保存的MATLAB数据。因为MAT文件格式是公开的,用户只要在找到安装路径下的一个名为matfile_format,pdf的文件,就可以详细了解 MAT 文件结构,从而在C/C++程序中以二进制格式读取文件内容,解析以后得到文件中保存的数据。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。