- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]12章 MATLAB外部接口技术
12.3 MATLAB与其他语言的接口 接口是MATLAB与其他语言程序相互调用各自函数的方法,MEX文件使MATLAB可以直接调用或链接C/C++语言编写的算法函数,而MATLAB引擎使C/C++语言可以调用MATLAB函数。 12.3.1 MEX文件 MEX(MATLAB Executable)动态链接函数接口是MATLAB调用其它语言编写的程序或算法的接口,通过mex命令将C、FORTRAN语言编写的算法函数编译成动态链接程序,使之成为MATLAB的一个扩展函数。在Windows系统中,MEX文件是DLL格式,使用DLL格式可以直接访问Windows系统的各种资源,生成图形用户界面,还可以利用Windows的动态数据交换能力,与其他的Windows应用程序交换数据。 1.MEX函数 MEX函数用于从MATLAB环境中获取必要的矩阵数据和相应信息。所有MEX函数均在MATLAB的子文件夹extern\include中的头文件mex.h得到声明。 2.MEX文件的建立 C语言的MEX文件的源程序由如下两个部分组成。 (1)入口子程序mexFunction 其作用是在MATLAB系统与被调用的外部子程序之间建立通信联系,定义被MATLAB调用的外部子程序的入口地址、MATLAB系统和子程序传递的参数等。 入口子程序的构成如下: void mexFunction(int nlhs,mxArray*plhs[],int nrhs,mxArray*prhs[]) { …… } 函数中有4个参数nlhs、plhs、nrhs和prhs。nlhs是输出数据的个数,plhs是指向输出数据的指针,nrhs是输入数据的个数,prhs是指向输入数据的指针。 (2)计算子程序(Computational Routine) 它包含所有完成计算功能的程序代码,由入口子程序调用。 3.MEX文件的编译 MEX文件的编译需要具备两个条件:一是要求已经安装MATLAB应用程序接口组件及其相应的工具,另一个是要求有合适的C/C++语言编译器。MEX文件的编译使用mex命令,如果第一次使用,需要配置mex采用什么编译器。在MATLAB命令窗口下输入 mex -setup 按提示选取一种编译器。这样在进行MEX文件编译操作时,系统将会自动使用默认编译器。 配置正确后,才可以进行MEX文件编译操作。 12.3.2 MATLAB引擎 MATLAB引擎(Engine)是用于和外部程序结合使用的一组函数和程序库,用户在C语言编写的应用程序中用它们来调用MATLAB中的函数。 MATLAB引擎有以下典型的功能应用: (1)调用MATLAB特有的强大数值计算和分析等函数进行运算。 (2)可以为一个特定的任务构建一个完整的系统。 1.MATLAB引擎函数 MATLAB引擎是MathWorks公司提供的一组函数库,它提供了在C程序中打开和关闭引擎、与MATLAB工作空间交互数据、调用MATLAB命令等函数。 MATLAB的extern\include下的头文件engine.h包含了所有C语言引擎函数的定义。 在C程序中使用MATLAB 引擎还用到MATLAB提供的接口函数中的mx-函数,以完成对mxArray对象的操作。 2.MATLAB引擎的编程 ① 将mxArray转换成MATLAB可理解的形式。一是用函数mxCreate来创建矩阵,然后用mxSetName对其命名;二是选择将一个自定义的数据结构复制到mxArray中。在MATLAB中矩阵是按列存储的,而C语言数组元素是按行存储的。 ② 将矩阵放入MATLAB引擎的工作区中,可以用以engPut开头的命令来完成。这些命令是以字符串的形式传递给函数engEvalString的。 3.MATLAB计算引擎程序的编译 使用mex命令编译引擎程序文件,必须使用参数-f指定适合的编译器选项文件,命令格式为 mex –f 选项文件名 filename.c 各种编译器选项文件都在MATLAB的安装目录下的\bin\win32\mexopts目录内,如Microsoft Visual C++ 8.0编译器的选项文件为msvc80engmatopts.bat。用Microsoft Visual C++ 8.0编译器编译例12-8的计算引擎程序的方法是: optsfile = [matlabroot \bin\win32\mexopts\msvc80engmatopts.bat]; mex(-f, optsfile, engdemo.c); MATLAB程序设计教程(第二版) 刘卫国 主编 中国水利水电出版社 第12章 MATLA
您可能关注的文档
- [工作范文]面包做法:健康之选.doc
- [工作范文]辽宁工程技术大学大学生素质拓展学分管理系统 使用手册b5版.doc
- [工作计划]人力资源部-工作计划-V20121101.ppt
- [工作范文]高频谐振放大器.ppt
- [工学]002 可编程逻辑器件基础.ppt
- [工作计划]绩效考核责任分工.ppt
- [工学]02 Flash CS3基础.ppt
- [工学]02航向稳定性和回转性.ppt
- [工学]01概述.ppt
- [工学]03第3章热湿环境.ppt
- 2023咸阳职业技术学院招聘笔试真题参考答案详解.docx
- 2023四川化工职业技术学院招聘笔试真题及参考答案详解.docx
- 2023哈尔滨职业技术学院招聘笔试真题及参考答案详解.docx
- 2023商洛职业技术学院招聘笔试真题及答案详解1套.docx
- 2023呼伦贝尔职业技术学院招聘笔试真题参考答案详解.docx
- 2023南阳农业职业学院招聘笔试真题参考答案详解.docx
- 2023天津公安警官职业学院招聘笔试真题带答案详解.docx
- 2023年上海电机学院招聘笔试真题参考答案详解.docx
- 2023年四川艺术职业学院招聘笔试真题参考答案详解.docx
- 2023安徽体育运动职业技术学院招聘笔试真题及答案详解一套.docx
文档评论(0)