首页 技术 正文
技术 2022年11月14日
0 收藏 358 点赞 2,888 浏览 2851 个字

MAT 文件
MAT文件是MATLAB使用的一种特有的二进制数据文件。MAT文件可以包含一个或者多个MATLAB 变量。MATLAB通常采用MAT文件把工作空间的变量存储在磁盘里,在MAT文件中不仅保存各变量数据本身,而且同时保存变量名以及数据类型等。所以在MATLAB中载入某个MAT文件后,可以在当前MATLAB工作空间完全再现当初保存该MAT 文件时的那些变量。这是其他文件格式所不能的。同样,用户也可以使用MAT文件从MATLAB环境中导出数据。MAT文件提供了一种更简便的机制在不同操作平台之间移动MATLAB数据。
2.5.1 在MATLAB中读写MAT文件
在MATLAB环境中,通常使用load和save两个命令进行 MAT 文件的读和写。在默认情况下,这两个命令以 MAT 文件格式处理文件,但是也可以用–ascii参数选项来强制用文件方式处理文件。关于这点已经在本章介绍过了,这里主要介绍如何读写MAT文件。
1. 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’)。
● load:如果matlab.mat文件存在,导入matlab.mat中的所有变量,如果不存在,则返回error.
● load filename:将filename中的全部变量导入到工作区中。
● load filename X Y Z …:将filename中的变量X、Y、Z等导入到工作区中,如果是MAT文件,在指定变量时可以使用通配符”*”.
● load filename -regexp expr1 expr2 …:通过正则表达式指定需要导入的变量。
● load -ascii filename:无论输入文件名是否包含有扩展名,将其以ASCII格式导入;如果指定的文件不是数字文本,则返回error.
● load -mat filename:无论输入文件名是否包含有扩展名,将其以mat格式导入;如果指定的文件不是MAT文件,则返回error.
2. save函数的使用
save 函数的功能是把当前MATLAB工作空间的一个或多个变量存写到外部文件。在默认情况下,save 函数以MAT格式存写数据。若在命令中直接调用该函数,不带任何参数,执行结果是把MATLAB工作空间的所有变量保存到系统默认的matlab.mat文件中。当然,带上文件名参数,就可以将当前工作空间中的所有变量存写在指定的 MAT文件中。
如果用户需要保存指定的某几个变量,只需在文件名参数后,列出要保存的文件名即可。比如,命令save mymat.mat x,y,z执行后的结果就是将当前工作空间中的变量 x,y,z保存到mymat.mat文件中,要求x,y,z是当前工作空间中已经存在的变量。
● save(’filename’):将工作区中的所有变量保存为文件,文件名由filename指定。如果filename中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径。
● save(’filename’, ‘var1’, ‘var2’, …):保存指定的变量在 filename 指定的文件中。
● save(’filename’, ‘-struct’, ‘s’):保存结构体s中全部域作为单独的变量。
● save(’filename’, ‘-struct’, ‘s’, ‘f1’, ‘f2’, …):保存结构体s中的指定变量。
● save(’-regexp’, expr1, expr2, …):通过正则表达式指定待保存的变量需满足的条件。
● save(’…, ‘format’),指定保存文件的格式,格式可以为MAT文件、ASCII文件等

3.open与load的比较。
》 clear
》 A = magic(3);
》 B = rand(3);
》 save
Saving to: matlab.mat
》 clear
》 load(’matlab.mat’)
》 A
A =
8 1 6
3 5 7
4 9 2
》 B
B =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
》 clear
》 open(’matlab.mat’)
ans =
A: [3×3 double]
B: [3×3 double]
》 struc1=ans;
》 struc1.A
ans =
8 1 6
3 5 7
4 9 2
》 struc1.B
ans =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
4. 在普通的C/C++程序中读写MAT文件
1.使用MATLAB 提供的MAT 文件接口函数 在C/C++程序中有两种方式可以读取MAT文件数据。一种是利用MATLAB提供的有关MAT文件的编程接口函数。MATLAB的库函数中包含了MAT文件接口函数库,其中有各种对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阵列头信息
2.在C/C++程序中读取MAT文件内容 www.tfjy386.com
另外一种在C/C++程序中读写 MAT 文件的方法是根据 MAT 文件结构,以二进制格式在C/C++中读入文件内容,然后解析文件内容,从而获得文件中保存的MATLAB数据。因为MAT文件格式是公开的,用户只要在找到安装路径下的一个名为matfile_format,pdf的文件,就可以详细了解 MAT 文件结构,从而在C/C++程序中以二进制格式读取文件内容,解析以后得到文件中保存的数据。具体方法在后面有讲解。 www.lefeng123.com

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,023
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,513
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,361
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,143
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,774
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,853