《MATLAB6.5 应用接口编程》上对mat的详细介绍:<BR>1、数据输入方式: <BR>1) 显示的输入 <BR>数据量小,从command window中输入 <BR>如: a=[1,2,3,4,5]; <BR>2) M文件形式输入 <BR>数据量较大,通过编写矩阵输入语句的M文件的执行进行输入 <BR>3) ASCII码数据文件的输入 <BR>要求ASCII码的数据文件中的数据形式必须是一个矩阵,要求每一行的数据个数 <BR>必须相同,每行数据对应矩阵的一行,每行的元素用空格分开。 <BR>命令形式: load 文件名(带扩展名) <BR>4) 底层I/O输入方式 <BR>可以直接打开(fopen)和读文件(fread),以及其他的一系列函数底层I/O函数 <BR>主要用于装入某种特定格式的数据文件。 <BR>5) MEX动态程序输入 <BR>用已有的c或者FORTRAN等子程序读取特殊格式的数据文件,再用MEX子程序转换成MAT数据文件,再用LOAD <BR>6) 外部程序转换 <BR><BR>2、 MATLAB数据输出 <BR>1) 小型数据输出 <BR>通过用diary命令生成包含命令窗口内的内容的文件,可以将diary文件剪接到其他的文件或者报告中。 <BR>生成的diary文件可以用文本编辑器来编辑。如: <BR>>> diary on <BR>>> d=[ 1 2 3] <BR>d = <BR>1 2 3 <BR>>> whos <BR>Name Size Bytes Class <BR>d 1x3 24 double array <BR>Grand total is 3 elements using 24 bytes <BR>>> diary off <BR>用记事本或者其他文本编辑器打开当前目录下的diary,就可以看到当前内容 <BR><BR>2) ASCII码数据输出 <BR>用带 -ASCII选项的save命令,如: <BR>A=rand(4,3); <BR>save temp.dat A -ascii <BR>生成的temp.dat的ASCII码文件,包含矩阵A的全部数据 <BR>3) 底层I/O输出 <BR>利用fopen和fwrite或者其他的底层I/O函数 <BR>4) MEX程序输出 <BR><BR>5) MAT格式输出 <BR>用save,如: <BR>a=rand(3,3); <BR>save adata a <BR><BR>3. MAT 文件格式 <BR><BR>它把文件存储为二进制格式,一般情况下,不需要了解MAT的具体格式,因为我们一遍使用MATLAB API来完成MAT文件的读取与存储,它屏蔽了MAT文件格式。然而,若要在一个MATLAB API不支持从系统中读写MAT文件,用户就必须了解MAT文件的存储格式。 <BR>MAT文件由128bytes 的MAT 文件头和尾随其后的数据单元组成,每个数据单元头部都有一个8字节的标志,表示这个数据单元里有多少数据,以及以什么方式读写这里的数据。一般读写方式有16位、32位、浮点或别的形式。MAT文件的结构如下图: <BR><BR><BR>1. MAT文件头包括: <BR>1)描述信息: <BR>a. MATLAB 版本 <BR>b. MAT文件创建的平台 <BR>c. 数据和文件被创建的时间 <BR>这些信息是文本格式的,可以在UNIX系统下用cat命令,在Windows系统中用type命令 <BR>例如: <BR>>> type ddd.mat <BR>MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Mon Apr 12 21:55:06 2004 <BR><BR>2)标志域 <BR>MAT文件头的最后4个字节被分成两个16位整数,称为标志域,其含义如下: <BR><BR><BR>2. MAT文件的数据单元格式 <BR><BR>1) 标志 <BR>8个字节,包括数据类型与字节数 <BR>具体说明见书^_^ <BR>2) 数据 <BR>必须在64位边界上对准,不全则补丁字节,使得下一个数据单元的标志从64位边界上开始。 <BR>3. 数据元素的一个例子 <BR>见后面的附图 <BR><BR><BR>4. 压缩数据元素格式 <BR>见书P79 <BR> |