版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Institute of Information Theory & Technology Center(ITTC)12Information Theory & Technology Center(ITTC) MATLAB功能强大,开发效率高,但主要缺点是执行速度比较慢 MATLAB提供了外部程序接口,允许MATLAB和其他应用程序进行数据交换,并提供了C/C+, FORTRAN数学和图形函数库,为在其他程序设计语言中调用MATLAB高效算法提供了可能。 MATLAB提供的外部程序接口技术主要由三种 MEX文件:文件: 是是matlab环境下调用环境下调用C、FORTRAN语言编
2、写的应用程序模块。语言编写的应用程序模块。 matlab 计算引擎:计算引擎: 在使用在使用C、FORTRAN编程时可调用编程时可调用matlab函数库进行计算。函数库进行计算。 MAT文件:文件: 实现实现matlab与与C、FORTRAN语言程序间的数据交换语言程序间的数据交换MATLAB外部程序接口技术3Information Theory & Technology Center(ITTC)MATLAB不能在M文件中直接调用C语言程序MEX(MATLAB Executable)动态链接函数接口 是是MATLAB调用别的语言(包括调用别的语言(包括C语言)编语言)编写的程序或算法的
3、接口写的程序或算法的接口MEX文件 是一种动态链接程序,是一种动态链接程序, MATLAB可以象调可以象调用用M文件一样调用它文件一样调用它Matlab与C语言程序的应用编程接口 4Information Theory & Technology Center(ITTC)MEX文件主要有以下几方面的应用: 已经开发的已经开发的C语言程序,则不必将其转化为语言程序,则不必将其转化为M文件而重复劳动,通过添加入口程序文件而重复劳动,通过添加入口程序mexFunction,可以由,可以由MATLAB调用。调用。 在在MATLAB中,中,M文件的计算速度特别是循文件的计算速度特别是循环迭代的速度
4、远比环迭代的速度远比C语言慢,因此可以把要语言慢,因此可以把要求大量循环迭代的部分用求大量循环迭代的部分用C语言编写为语言编写为MEX文件,提高计算速度。文件,提高计算速度。 直接控制硬件,如直接控制硬件,如A/D采集卡,采集卡,D/A输出卡输出卡等,以用于数据采集或控制应用。等,以用于数据采集或控制应用。 MEX文件5Information Theory & Technology Center(ITTC) MEX文件的源程序由两部分组成: 计算子程序计算子程序 包含所有完成计算功能的程序代码,计算程序可以是包含所有完成计算功能的程序代码,计算程序可以是普通的普通的C语言程序,按照语言
5、程序,按照C语言规则编写即可语言规则编写即可 入口子程序入口子程序mexFunction 在在MATLAB系统与被调用的外部子程序间建立通信联系系统与被调用的外部子程序间建立通信联系 入口子程序的名字必须是入口子程序的名字必须是mexFunction,调用格式为:,调用格式为: void mexFunction(int nlhs,mxArray *plhs,int nrhs, mxArray *prhs) nlhs:输出参数数目:输出参数数目 plhs:指向:指向mxArray(MATLAB中所有数据都由中所有数据都由mxArray定义)定义)的输出参数的指针的输出参数的指针 nrhs:输入参
6、数数目:输入参数数目 Prhs:指向:指向mxArray的输入数据的指针。的输入数据的指针。 MEX文件(续)6Information Theory & Technology Center(ITTC) mexFunction函数举例 使用使用a,b=test(c,d,e)调用调用mex函数函数test时,传给时,传给test的这四的这四个参数分别是个参数分别是 2,plhs,3,prhs其中:其中: prhs0=c prhs1=d prhs2=e plhs0=a plhs1=b注意:注意:MEX文件的两个主要部分在使用中可以是独立的,文件的两个主要部分在使用中可以是独立的,也可以是组合
7、在一起的。不管是哪一种情况,也可以是组合在一起的。不管是哪一种情况,MEX文件都文件都必须包含头文件必须包含头文件mex.h,以便正常申明入口程序。,以便正常申明入口程序。MEX文件(续)7Information Theory & Technology Center(ITTC)例:第一步:给出一个简单的C语言程序该程序的功能是将标量该程序的功能是将标量x加倍。加倍。 #include math.hvoid timestwo(double y, double x)y0=2.0*x0;return;Matlab与C语言混合编程示例8Information Theory & Tech
8、nology Center(ITTC)#include mex.h void timestwo(double y, double x) y0 = 2.0*x0; void mexFunction( int nlhs, mxArray *plhs, int nrhs, const mxArray *prhs ) double *x,*y; int mrows,ncols; /*检查正确的参数数目 */ if(nrhs!=1) mexErrMsgTxt(需要一个输入参数 .); else if(nlhs1) mexErrMsgTxt(输出参数太多 ); Matlab与C语言混合编程示例(续)/*输
9、入变量必须是非复数类型的标量输入变量必须是非复数类型的标量 .*/ mrows = mxGetM(prhs0); ncols = mxGetN(prhs0); if( !mxIsDouble(prhs0) | mxIsComplex(prhs0) | !(mrows=1 & ncols=1) ) mexErrMsgTxt(输入变量必须是非复数类型的标量输入变量必须是非复数类型的标量 .); /*为返回参数创建矩阵为返回参数创建矩阵 . */ plhs0 = mxCreateDoubleMatrix(mrows,ncols, mxREAL); /*分配输入输出参数的指针分配输入输出参数的指针 . */ x = mxGetPr(prhs0); y = mxGetPr(plhs0); /*调用调用timestwo子函数子函数 . */ timestwo(y,x);第二步:编写与第二步:编写与C语言程序功能相同的语言程序功能相同的MEX文件文件9Information Theory & Technology Center(ITTC) 第三步:将此MEX文件复制到当前工作目录进行编译和链接 在在MATLAB命令窗口中输入:命令窗口中输入: mex timestwo.c 第四步:编译后就可以象调用M函数一样调用timestwo了 在在MATLAB命令窗口中输入:命令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- TY/T 5002-2025运动营养品功效评价程序和方法
- 2025-2026学年山东省聊城市重点达标名校初三“临门一脚”数学试题含解析
- 吉林省松原宁江区五校联考2025-2026学年初三下学期毕业班联考(二)物理试题含解析
- 2026年大学大一(教育学)中外教育史阶段测试试题及答案
- 2025年前台防疫考核题
- 护理暴力倾向患者的长期护理计划
- 慢性肾功衰患者的护理应急预案
- 护理职业精神与团队协作
- 2026二年级数学下册 求商技巧
- 慢性肾炎患者常见误区解读
- 部编版小学语文四年级下册教案(表格式)
- GB/T 16938-2008紧固件螺栓、螺钉、螺柱和螺母通用技术条件
- GB/T 15812.1-2005非血管内导管第1部分:一般性能试验方法
- 2023年毕节地区毕节市广播电视台(融媒体中心)招聘笔试题库及答案解析
- 毕业证明书申请表(模板)
- 第5章护际关系伦理第6章课件讲义
- 城市供热工程系统规划-课件
- 新人教版三年级下册语文全册课件(新教材)
- 代维人员技能认证方案
- 特种设备安全培训课件
- 部编人教版九年级历史下册全册知识点总结
评论
0/150
提交评论