找回密码
 注册
Simdroid-非首页
查看: 406|回复: 2

mat文件结构分析

[复制链接]
发表于 2006-1-11 16:13:17 | 显示全部楼层 |阅读模式 来自 广东深圳
05年10月底时自己尝试分析了一下mat文件的格式。总结如下:

matlab系统mat文件格式分析

针对2维矩阵的分析,未包含多维矩阵、结构体、字符串等情况。

1.文件头
首先是一个字符串,共74个字符,用于说明mat文件版本以及创建时间。
然后补足50个空格,之后是0x00、0x01、0x49、0x4D,补齐128个字节。
文件头一共128字节。
2.每一个变量的头,共32字节。前四个字节为0x0E、0x00、0x00、0x00,
之后四个字节表明从这四个字节之后,该变量占据的文件大小。一般是8
的倍数。然后补足24个字节,为
0x06、0x00、0x00、0x00、0x08、0x00、0x00、0x00、
0x06、0x00、0x00、0x00、0x00、0x00、0x00、0x00、
0x05、0x00、0x00、0x00、0x08、0x00、0x00、0x00、
之后8个字节表明行数和列数。后面8个字节表明变量的名称的行数和列数。
之后是变量的名称,如果不足8的倍数,用0x00补足。如果变量名的长度小于等于4个字节,则变量名的行数和列数以及变量名共享8个字节。之后的8个字节用来表示
变量的数据类型和占据的文件空间。一般格式如下
0xXX、0x00、0x00、0x00、0xYY、0xZZ、0xWW、0xTT
前四个字节表明变量的类型,后面四个字节表示占据的空间。
之后是数据,按照行顺序排列。如果不足8的倍数,用0x00补足。
如果数据占用的空间小于4个字节,则和表示数据类型、空间大小的数据共享8个字节的文件空间。
数据类型为0x02,表明为整数,一个数据单元占用1字节。数据范围0到255
数据类型为0x03,表明为整数,一个数据单元占用2字节。数据范围-32768到32767
数据类型为0x04,表明为整数,一个数据单元占用2字节。数据范围0到65535
数据类型为0x05,表明为整数,一个数据单元占用4字节。
数据类型为0x09,表明为浮点数,一个单元占用8字节。浮点数格式和vc一致。

3.如果后面还有变量,则文件格式基本上是2的重复。

在此基础上,用vc写了一个dll库,用来把vc中的变量保存为mat文件格式。我自己用这个东西用了两个月了。效果还算马马虎虎,没出过什么问题。附件是vc库的源代码。用vc6编译。感兴趣的人可以拿来玩玩,但是严禁用于商业目的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2006-1-11 21:43:02 | 显示全部楼层 来自 上海

Re:mat文件结构分析

Simdroid开发平台
好东西!!!!
谢谢分享!!!
 楼主| 发表于 2006-1-12 09:31:58 | 显示全部楼层 来自 广东深圳

Re:mat文件结构分析

忘了一个重要的东西,这是一个dll库的测试程序,也可以作为库使用的例子。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-23 22:17 , Processed in 0.042597 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表