新浪博客

MAT文件的读写与格式

2006-11-25 21:17阅读:
MAT文件的读写与格式
山城棒棒儿军 @ 2004-04-12 23:32
MATLAB 与其他编程环境的数据交互是通过MAT文件来实现的。尽管自己以往见到这一说但是,对于MAT文件的详细了解,今天在《MATLAB6.5 应用接口编程》一书见到了详细介绍。
1、数据输入方式:
1) 显示的输入
数据量小,从command window中输入
如: a=[1,2,3,4,5];
2) M文件形式输入
数据量较大,通过编写矩阵输入语句的M文件的执行进行输入
3) ASCII码数据文件的输入
要求ASCII码的数据文件中的数据形式必须是一个矩阵,要求每一行的数据个数
必须相同,每行数据对应矩阵的一行,每行的元素用空格分开。
命令形式: load 文件名(带扩展名)
4) 底层I/O输入方式
可以直接打开(fopen)和读文件(fread),以及其他的一系列函数底层I/O函数
主要用于装入某种特定格式的数据文件。
5)
MEX动态程序输入
用已有的c或者FORTRAN等子程序读取特殊格式的数据文件,再用MEX子程序转换成MAT数据文件,再用LOAD
6) 外部程序转换
2、 MATLAB数据输出
1) 小型数据输出
通过用diary命令生成包含命令窗口内的内容的文件,可以将diary文件剪接到其他的文件或者报告中。
生成的diary文件可以用文本编辑器来编辑。如:
>> diary on
>> d=[ 1 2 3]
d =
1 2 3
>> whos
Name Size Bytes Class
d 1x3 24 double array
Grand total is 3 elements using 24 bytes
>> diary off
用记事本或者其他文本编辑器打开当前目录下的diary,就可以看到当前内容
2) ASCII码数据输出
用带 -ASCII选项的save命令,如:
A=rand(4,3);
save temp.dat A -ascii
生成的temp.dat的ASCII码文件,包含矩阵A的全部数据
3) 底层I/O输出
利用fopen和fwrite或者其他的底层I/O函数
4) MEX程序输出
5) MAT格式输出
用save,如:
a=rand(3,3);
save adata a
3. MAT 文件格式
它把文件存储为二进制格式,一般情况下,不需要了解MAT的具体格式,因为我们一遍使用MATLAB API来完成MAT文件的读取与存储,它屏蔽了MAT文件格式。然而,若要在一个MATLAB API不支持从系统中读写MAT文件,用户就必须了解MAT文件的存储格式。
MAT文件由128bytes 的MAT 文件头和尾随其后的数据单元组成,每个数据单元头部都有一个8字节的标志,表示这个数据单元里有多少数据,以及以什么方式读写这里的数据。一般读写方式有16位、32位、浮点或别的形式。MAT文件的结构如下图:
MAT文件的读写与格式




















































1.MAT文件头包括:
1)描述信息:
a. MATLAB 版本
b. MAT文件创建的平台
c. 数据和文件被创建的时间
这些信息是文本格式的,可以在UNIX系统下用cat命令,在Windows系统中用type命令
例如:
>> type ddd.mat
MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Mon Apr 12 21:55:06 2004
2)标志域
MAT文件头的最后4个字节被分成两个16位整数,称为标志域,其含义如下:
MAT文件的读写与格式












MAT文件的读写与格式














2. MAT文件的数据单元格式
1) 标志
8个字节,包括数据类型与字节数
具体说明见书^_^
2) 数据
必须在64位边界上对准,不全则补丁字节,使得下一个数据单元的标志从64位边界上开始。
3. 数据元素的一个例子
见后面的附图
MAT文件的读写与格式













4. 压缩数据元素格式
见书P79

我的更多文章

下载客户端阅读体验更佳

APP专享