Matlab中Mex文件的创建和使用方法资料

上传人:蓝** 文档编号:252522098 上传时间:2024-11-16 格式:PPT 页数:19 大小:304KB
返回 下载 相关 举报
Matlab中Mex文件的创建和使用方法资料_第1页
第1页 / 共19页
Matlab中Mex文件的创建和使用方法资料_第2页
第2页 / 共19页
Matlab中Mex文件的创建和使用方法资料_第3页
第3页 / 共19页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,九、,MATLAB,编译器和,Notebook,编译器概述,编译器的安装和配置,创立MEX文件,创立独立的外部程序EXE文件,Notebook,2,9.1,编译器概述,MATLAB编译器The MATLAB Compiler,MCC可以将M文件转化为C或C源代码,然后进一步编译链接成MEX文件或可执行程序或共享库文件。编译后可以大大提高程序的运行效率,甚至可以脱离MATLAB环境运行程序。,编译器主要包括:,将,C,源码文件生成,MEX,文件的,mex,编译器;,将,C,源码文件生成可独立运行文件的,mbuild,编译器;,可以将,M,文件转换成,C,源码文件并调用,mex,或,mbuild,编译器生成,MEX,文件或,exe,可执行程序的,mcc,编译器。,9.1.1,编译器的功能,产生源代码,进而生成MEX文件。,MEX文件可以提高运行速度,并且可以隐蔽文件算法,避开非法修改源文件。,2.产生C或C源码,进而生成独立的外部应用程序EXE文件。,该程序无需MATLAB环境支持,假设源M文件使用了绘图指令,则需要图形库支持。,3.,产生,C MEX,的,S,函数。,加快,Simulink,中自定义的,S,函数模块的运行速度。,4.产生C共享库动态链接库、DLL或C+静态库。,它们的使用无需MATLAB环境支持,但需要MATLAB的数学库。,3,9.1.2,编译器的局限性,不支持,M,脚本文件的编译。,不支持用户自定义的对象。,不支持,eval,input,inline,等函数。,不支持,Java,接口。,9.2.1 配置MATLAB编译器的前提预备,1.计算机必需安装有ANSIC/C+编译器。下面任何一种C/C+编译器均可。,Microsoft Visual C/C+5.0以上版本。,Borland C/C+5.0以上版本。,LCC C(MATLAB自带,只能用于生成MEX文件。,2.,在安装,MATLAB,时,选中组件,MATLAB Compiler,C/C+Math Library,MATLAB C/C+Graphics Library,9.2,编译器的安装和配置,4,9.2.2 为产生MEX文件进展预配置,要实现从M文件到MEX文件的转换,就必需先对M编译器进展正确设置。预配置包括两个过程:一是依据外部编译器的类型、软件位置对M编译器进展设置;二是利用MATLAB供给的标准文件对用户设置加以验证。,1.,对,MATLAB,编译器应用程序,mex,的配置,启动配置:在,MATLAB,指令窗口运行,mex-setup,命令,mex-setup,Select a compiler:,1 Lcc C version 2.4 in C:MATLAB6P5syslcc,2 Microsoft Visual C/C+version 6.0 in D:Program FilesMicrosoft Visual Studio,0 None,Compiler:,2,The default options file:,“D:Documents and SettingsslluApplication DataMathWorksMATLABR13mexopts.bat“,is being updated from C:MATLAB6P5BINWIN32mexoptsmsvc60opts.bat.,Installing the MATLAB Visual Studio add-in.,Updated D:Program FilesMicrosoft Visual Studiocommonmsdev98templateMATLABWizard.awx,from C:MATLAB6P5BINWIN32MATLABWizard.awx,5,2.,验证配置的正确性,验证分两步进展:首先验证mex命令是否可以将C源码转换成MEX文件;然后再验证mcc命令是否可以将M文件转换成MEX文件。mcc命令可以在M文件转换成C源码后,自动调用mex命令,将C源码转换成MEX文件。,利用,MATLAB,自带的,yprime.c,和,yprime.m,来验证,mex,和,mcc,命令。,mex my_yprime.c,%,由,my_yprime.c,文件生成,my_yprime.dll,文件,my_yprime(1,1:4),%,运行,my_yprime.dll,文件,ans=,2.0000 8.9685 4.000 -1.0947,1验证mex应用程序,先将externexamplemex名目下的yprime.c文件复制到自己的名目下,并改名为my_yprime.c。,which my_yprime,%,获得,my_yprime.dll,文件的位置信息,D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmy_yprime.dll,clear my_yprime.dll,%,删除,my_yprime.dll,文件,2验证mcc应用程序,先将externexamplemex名目下的yprime.m文件复制到自己的名目下,并改名为my_yprime_m.m。,6,mcc-x my_yprime_m,my_yprime_m(1,1:4),ans=,2.0000 8.9685 4.000 -1.0947,which my_yprime_m,D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmy_yprime_m.dll,9.2.2 为产生独立外部应用程序进展预配置,要实现从M文件到独立外部应用程序的转换,也必需先对MATLAB编译器进展正确设置。预配置包括两个过程:一是依据外部编译器的类型、软件位置对MATLAB编译器进展设置,同时对MATLAB C数学函数库进展选择;二是利用MATLAB供给的标准文件对用户设置加以验证。,1.,对,MATLAB,编译器应用程序,mbuild,的配置,启动配置:在,MATLAB,指令窗口运行,mbuild-setup,命令,mbuild-setup,Select a compiler:,1 Lcc C version 2.4 in C:MATLAB6P5syslcc,2 Microsoft Visual C/C+version 6.0 in D:Program FilesMicrosoft Visual Studio,0 None,Compiler:2,The default options file:,“D:Documents and SettingsslluApplication DataMathWorksMATLABR13compopts.bat“,is being updated from C:MATLAB6P5BINWIN32mbuildoptsmsvc60compp.bat.,7,2.,验证配置的正确性,验证分两步进展:首先验证mbuild命令是否可以将C源码转换成EXE文件;然后再验证mcc命令是否可以将M文件转换成EXE文件。mcc命令可以在M文件转换成C源码后,自动调用mbuild命令,将C源码转换成EXE文件。,利用,MATLAB,自带的,ex1.c,和,hello.m,来验证,mbuild,和,mcc,命令。,1验证mex应用程序,先将externexamplecmath名目下的ex1.c文件复制到自己的名目下,并改名为my_ex1.c。,mbuild my_ex1.c,%,生成,my_ex1.exe,文件,在,Windows,的,DOS,窗口运行,my_ex1.exe,文件查看其正确性。,2验证mcc应用程序,先将externexamplecompiler名目下的hello.m文件复制到自己的名目下,并改名为my_hello.m。,mcc-p my_hello.m,在,Windows,的,DOS,窗口运行,my_hello.exe,文件查看其正确性。,D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmy_ex1,1 3 5,2 4 6,1.0000+7.0000i 4.0000+10.0000i,2.0000+8.0000i 5.0000+11.0000i,3.0000+9.0000i 6.0000+12.0000i,D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmy_ex1,Hello,World,8,9.3 创立MEX文件,创立MEX文件有两种方法:,利用C源码编辑器编写C语言MEX文件,经过mex命令编译链接得到MEX文件。,利用M文件编辑器编写M函数文件,经过mcc命令编译链接得到MEX文件。,MEX文件的优点:,运行速度快,利用C代码实现循环体要比MATLAB快很多;,对于已存在的C或FORTRAN子程序,可以通过MEX文件在MATLAB环境中直接调用,而不必重新编写M文件;,对于A/D、D/A卡,或其它PC硬件,可以直接用MEX文件进展访问;,利用MEX文件,可以使用如Windows用户图形界面等资源。,9.3.1 C,语言,MEX,文件的构成,程序的构成主要由入口子程序和计算功能子程序两局部组成。,void mexFunction(int nlhs,mxArray*plhs,int nrhs,const mxArray*prhs),/*,用来完成,MATLAB,与计算子程序之间通信任务的代码*,/,(1)入口子程序,入口子程序必需是mexFunction,其构成形式为:,mexFunction,函数的参数含义为:,nrhs,:为输入参数的数目。,prhs,:为输入参数数组,是指针数组。,nlhs,:为输出参数的数目。,plhs,:为输出参数数组,是指针数组。,9,入口子程序的作用是在,MATLAB,系统与被调用的外部子程序之间建立通信联系。,(2)计算功能子程序,计算功能子程序包含全部的实际需要完成的功能源代码,可以是用户以前所编写的算法和程序,以函数的形式存在。,C语言MEX文件必需包含mex.h库:include”mex.h”。mex.h库中包含了C语言MEX文件所需要的mex-函数和matrix.h库定义了mx-函数。,mex-和mx-函数是MATLAB供给与外界程序接口的函数。mx-函数用来实现MATLAB的矩阵操作;mex-函数用来实现从MATLAB环境中猎取矩阵数据并返回信息。,9.3.2 C,语言,MEX,文件的建立,timestwo.c,#include“mex.h“,/*计算功能子程序timestwo,计算一个数的两倍*/,void timestwo(double y,double x),y0=2.0*x0;,/*入口子程序mexFunction*/,void mexFunction(int nlhs,mxArray*plhs,int nrhs,const mxArray*prhs),double*x,*y;,int mrows,ncols;,10,/*检查输入输出参数*/,if(nrhs!=1),mexErrMsgTxt(“One input required.“);,else if(nlhs1),mexErrMsgTxt(“Too many output arguments“);,/*输入只能是一个双精度型的实数*/,mrows=mxGetM(prhs0);,ncols=mxGetN(prhs0);,if(!mxIsDouble(prhs0)|mxIsComplex(prhs0)|,!(mrows=1&ncols=1),mexErrMsgTxt(“In
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!