版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学MATLAB应用程序接口应用程序接口电子科技大学MATLAB 混合编程的混合编程的3个例子个例子1.MAT文件的读写2.C语言调用MATLAB编译器生成的DLL模块3.Matlab调用C语言编写的MEX文件电子科技大学MAT文件的读写文件的读写MAT文件由128bytes MAT 文件头和尾随其后的数据单元组成,每个数据单元头部都有一个8字节的标志,表示这个数据单元里有多少数据,以及以什么方式读写这里的数据。一般读写方式有16位、32位、浮点或别的形式。MAT文件的结构如右图电子科技大学MAT文件的读写文件的读写MATLAB 提供的用于操作 MAT 文件的 API 函数封装于两个标
2、准库文件中:libmat.lib 和 libmx.lib。前者用于对MAT文件的操作,后者用于对MAT文件中矩阵的操作。这两个库文件对于不同语言和不同版本的编辑器而有所不同,存放在binwin32相应子文件夹中。此外,在externinclude 中有与前面两个标准库文件对应的.def 文件:libmat.def、libmx.def。其导出函数的原型位于同一目录下的 mat.h和 matrix.h中,mat.h包含了 MAT文件的创建、 读写等函数的定义;matrix.h包含了MATLAB中基本的数据类型、 矩阵的定义和操作方法。电子科技大学MAT文件的读写文件的读写一个实例小程序,用于将BC
3、I脑电数据CNT格式转变为MAT格式数据电子科技大学C语言调用语言调用MATLAB编译器生成的编译器生成的DLL模块模块09年脑电麻醉深度检测项目电子科技大学C语言调用语言调用MATLAB编译器生成的编译器生成的DLL模块模块09年脑电麻醉深度检测项目流程图:信号处理模块:function ADep=AD(EEG,SampleRate)数据读取/分段处理和显示综合评估复杂度特征爆发抑制特征双频指数特征输出麻醉深度指标*_matout.datWFDB数据Config.ini控制检测电子科技大学C语言调用语言调用MATLAB编译器生成的编译器生成的DLL模块模块VC编写的界面调用MATLAB编写的
4、函数function ADep=AD(EEG,SampleRate)电子科技大学C语言调用语言调用MATLAB编译器生成的编译器生成的DLL模块模块MATLAB编译器的配置电子科技大学C语言调用语言调用MATLAB编译器生成的编译器生成的DLL模块模块MATLAB编译器MCC 编译一个C动态库电子科技大学C语言调用语言调用MATLAB编译器生成的编译器生成的DLL模块模块MATLAB编译器MCC 编译一个C+动态库mcc -B cpplib:DatComp DatProcess.m电子科技大学C语言调用语言调用MATLAB编译器生成的编译器生成的DLL模块模块MATLAB编译器MCC 编译一个
5、C+动态库mcc -B cpplib:DatComp DatProcess.m电子科技大学补充:函数库的简介补充:函数库的简介 对函数库的链接是放在编译时期(compile time)完成的.所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file) (完整复制或提供地址)(1).h与.lib是必须的,dll是运行时需要的。 (2)静态库只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。 (3)动态库有两个文件,一个是引入库(.LIB)文件,一个是DLL文件。引入库文件包含被DLL导出的函数的名
6、称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。电子科技大学C语言调用语言调用MATLAB编译器生成的编译器生成的DLL模块模块对 CB的编译器环境进行设置。 在Project-options-directory里面设置include和lib的路径,源代码中加入头文件 Datcomp.h,项目中加入 libmat.lib libm
7、x.lib mclmcrrt.lib 以及 MCC生成的Datcomp.lib电子科技大学C语言调用语言调用MATLAB编译器生成的编译器生成的DLL模块模块对 VC的编译器环境进行设置。 在Tool-options-directory里面设置include和lib的路径,项目中加入 libmat.lib libmx.lib mclmcrrt.lib 以及 MCC生成的Datcomp.lib电子科技大学C语言调用语言调用MATLAB编译器生成的编译器生成的DLL模块模块电子科技大学Matlab调用调用C语言编写的语言编写的MEX文件文件MEX文件的源程序由两个部分组成:(1)入口子程序 mex
8、Function。其作用是在MATLAB系统与被调用的外部子程序间建立通信联系。函数中有四个参数nlhs、plhs、nrhs和prhs。函数原型如下:void mexFunction(int nlhs, mxArray *plhs,int nrhs, const mxArray *prhs)这里nlhs是输出数据的个数plhs是指向mxArray(MATLAB中所有数据都由mxArray定义)的输出数据的指针nrhs是输人数据的个数,prhs是指向mxArray的输入数据的指针。(2)用户子程序。包含MEX文件中完成计算功能的程序代码,计算子程序可以是普通的C语言程序按照C语言规则编写即可。计
9、算子程序由入口子程序调用。电子科技大学Matlab生成生成MEX文件:文件:mex setupmex getname.c生成文件后缀生成文件后缀:*.mexw32电子科技大学MATLAB 混合编程的注意事项混合编程的注意事项选择合适的MATLAB版本CB 推荐 matlab 2007B电子科技大学MATLAB 混合编程的注意事项混合编程的注意事项C语言中使用这种调用形式最好try MRC_FUNCTION()catch (const mwException& e) strtemp.sprintf(matlab error:%sn,e.what(); ShowMessage(strtemp);MRC版本必须与编译所用的MATLAB匹配编译时使用不同文件名,且尽量按照MATLAB的文件命名要求,如mcc -B cpplib:DatComp DatProcess.m电子科技大学M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁路项目风险评估报告
- 水资源利用与调配方案
- 旅游景区文旅服务升级改造项目社会稳定风险评估报告
- 果品冷链物流基地项目社会稳定风险评估报告
- 变形监测仪器选型与配置方案
- 2026年信阳涉外职业技术学院单招职业倾向性测试题库及参考答案详解一套
- 2026年天津渤海职业技术学院单招职业技能测试题库及完整答案详解1套
- 2026年宁夏工商职业技术学院单招职业技能考试题库带答案详解
- 2026年四川文轩职业学院单招职业适应性测试题库参考答案详解
- 2026年湖北城市建设职业技术学院单招职业适应性考试题库及答案详解一套
- JJF 1915-2021 倾角仪校准规范
- 部编九下语文9 《鱼我所欲也》课后习题参考答案
- 光刻和刻蚀工艺
- 优质课-中国的农业
- 德国格屋集团提升推拉和推拉窗五金系统介绍
- GB/T 12668.4-2006调速电气传动系统第4部分:一般要求交流电压1000V以上但不超过35kV的交流调速电气传动系统额定值的规定
- FZ/T 52052-2018低熔点聚酯(LMPET)/再生聚酯(RPET)复合短纤维
- CB/T 466-1995法兰铸钢闸阀
- 形象礼仪教材课件
- (更新版)中国移动政企行业认证题库大全-下(判断题汇总)
- 项目部级安全教育考试题及答案
评论
0/150
提交评论