声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4345|回复: 6

请问mex文件和mat文件是什么东东?

[复制链接]
发表于 2005-11-27 23:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
<P>请问mex文件和mat文件是什么东东?好像是跟接口有关。有没有这方面的书籍呀?能共享一下吗?谢谢。</P>
回复
分享到:

使用道具 举报

发表于 2005-11-28 08:37 | 显示全部楼层

回复:(sihaiwuya)请问mex文件和mat文件是什么东东?...

MAT文件是MATLAB专用的用于保存数据至磁盘和向MATLAB导入、从MATLAB导出数据的数据文件格式。MAT文件提供了一种简便的机制,它允许你在两个平台之间以灵活的方式移动数据。而且,它还提供了一种途径来向其它单机MATLAB应用导入或者导出数据。
<P>为了简化在MATLAB环境之外对MAT文件的使用,MATLAB给出了一个操作例程库,通过它,我们可以使用C/C++或者Fortran程序读写MAT文件。</P>MATLAB是用M语言编程,不能在M文件中直接调用C语言程序。可以通过MATLAB提供的应用编程接口(API)来实现与外部的接口,在MATLAB环境中实现调用C语言或Fortran程序、输入或输出数据以及和其他软件程序间建立客户/服务器关系等功能。<BR><BR>MATLAB中调用C语言程序,必须通过MEX文件来实现。
发表于 2005-11-28 08:37 | 显示全部楼层

回复:(sihaiwuya)请问mex文件和mat文件是什么东东?...

C语言的MEX文件的结构<BR><BR>  C语言的MEX文件是一种动态连接子程序,可以象调用M文件一样调用它。MEX文件主要有以下几方面的应用:<BR><BR>  (1)在MATLAB中,M文件的计算速度特别是循环迭代的速度远比C语言慢,因此可以把要求大量循环迭代的部分用C语言编写为MEX文件,提高计算速度。<BR><BR>  (2)已经开发的C语言程序,则不必将其转化为M文件而重复劳动,通过添加入口程序mexFunction,可以由MATLAB调用。<BR><BR>  (3)直接控制硬件,如A/D采集卡,D/A输出卡等,以用于数据采集或控制应用。 <BR>  C语言的MEX文件的源程序由两个非常明显部分组成:<BR><BR>  (1)计算程序,即在MEX文件中完成计算功能的程序代码,计算程序可以是普通的C语言程序,按照C语言规则编写即可<BR><BR>  (2)入口程序,将计算程序与MATLAB连接的入口函数mexFunction。入口程序mexFunction相对要复杂一些,函数中有四个参数nlhs、plhs、nrhs和prhs。这里nlhs是输出数据的个数,plhs是指向mxArray(MATLAB中所有数据都由mxArray定义)的输出数据的指针,nrhs是输入数据的个数,prhs是指向mxArray的输入数据的指针。
发表于 2005-11-28 08:39 | 显示全部楼层

回复:(sihaiwuya)请问mex文件和mat文件是什么东东?...

《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>&gt;&gt; diary on <BR>&gt;&gt; d=[ 1 2 3] <BR>d = <BR>1 2 3 <BR>&gt;&gt; whos <BR>Name Size Bytes Class <BR>d 1x3 24 double array <BR>Grand total is 3 elements using 24 bytes <BR>&gt;&gt; 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>&gt;&gt; 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>
 楼主| 发表于 2005-11-28 12:07 | 显示全部楼层
<P>thanks</P>
发表于 2005-11-29 08:51 | 显示全部楼层
支持
发表于 2006-4-6 22:33 | 显示全部楼层
非常感谢 如果要是多一些这方面的信息那就更好了,感激不尽。[em01]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 14:55 , Processed in 0.082228 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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