Matlab与外部接口:MAT文件基础
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: [3x3 double]
B: [3x3 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
Matlab与外部接口:MAT文件基础的更多相关文章
- MATLAB:保存mat文件
X_Y_pred_00_0000.mat里存有三个mat文件: 另存:
- MATLAB:读取mat文件中物体的三维坐标,显示三维模型
在MATLAB中建立一个脚本show3Dmat.m文件,编写代码: clc; clear; %%read 3D data load('E:\博士\深度学习与三维重建\代码实现\3DRecGAN\X_Y ...
- matlab,xls转换为mat文件
b=xlsread('iris_data.xls');save iris_data.mat b
- Matlab+Qt开发笔记(二):Qt打开mat文件显示读取的数据
前言 介绍了基础环境,最终是为了读取显示.mat文件,本篇读取mat文件并显示. 补充 测试的mat文件是double类型的. Matlab库数据类型 变量类型:matError,错误变量 ...
- MAT文件操作
o李YZo 原文 MAT文件打开方法汇总及其他操作 MAT文件简介 为MATLAB使用的一种特有的二进制数据文件.MAT文件可以包含一个或者多个MATLAB 变量.MATLAB通常采用MAT文件把工作 ...
- matlab遍历文件制作自己的数据集 .mat文件
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9115788.html 看到深度学习里面的教学动不动就是拿MNIST数据集,或者是IMGPACK ...
- matlab mat文件读取和调用
13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存.导入和文件打开.13.1.1 文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时 ...
- MATLAB将批量的图片保存为mat文件
clc; clear all; num = 10; for i = 1 : num IM = imread(sprintf('E:\\TEST\\PtzTEST2015-8-9\\image1280x ...
- matlab结构体形式保存数据生成.mat文件< 转>
2015年 参加天池大数据竞赛 为了建立模型,打算基于matlab使用Random Forest Algorithm的工具包 该工具包我在此分享给大家,http://yunpan.cn/cVX ...
随机推荐
- -_-#【React】
React Native 用于构建用户界面的JAVASCRIPT库 | ReactReact 入门实例教程颠覆式前端UI开发框架:Reactzhihu1zhihu2 React.js编程思想 < ...
- HDU 4421 Bit Magic(奇葩式解法)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4421 题目大意: 给了你一段代码, 用一个数组的数 对其进行那段代码的处理,是可以得到一个矩阵 让你判 ...
- Ubuntu配置ecilpse终端启动
1. 使用Root用户登陆:但如果要使用root用户登录,必须先为root用户设置密码: (1)打开终端,输入:sudo passwd root 然后enter 此时会提示你输入密码,在passwor ...
- Spark处理Json格式数据(Python)
前言 Spark能够自动推断出Json数据集的“数据模式”(Schema),并将它加载为一个SchemaRDD实例.这种“自动”的行为是通过下述两种方法实现的: jsonFile:从一个文件目 ...
- List的数据结构
从这张图片说起:TreeList的实现结构: 首先是构建函数 TreeList(Collection coll),调用增加函数: public void add(int index, Object o ...
- Java 设计模式实现 不错的引用
这段时间有兴趣重新温习一下设计模式在Java中的实现,碰巧看到一个不错的设计模式总结,这里引用一下作为参考. 创建型模式: JAVA设计模式-Singleton JAVA设计模式-Factory JA ...
- 在Eclipse中新建Maven项目
关于Maven的好的资料: Apache官网:http://maven.apache.org/ Apache Maven 入门篇 ( 上 ):http://www.oracle.com/technet ...
- xshell中启动linux图形界面
使用root用户执行xhost + IP为客户端机器IP,使用远程登录用户执行 DISPLAY=IP:0.0;export DISPLAY; 使用远程登录的用户执行: xhost +
- poj 2823 Sliding Window(单调队列)
/* 裸地单调队列.. 第一次写 写的好丑.... */ #include<iostream> #include<cstdio> #include<cstring> ...
- 安装Microsoft oneDrive(原skyDrive)
oneDrive下载地址:https://onedrive.live.com/about/zh-cn/download/ 安装时报错:Error 0x80040ca0 解决方案:关闭安装程序,按下面的 ...