MATLAB外部接口编程第4章课件.ppt

上传人:飞****2 文档编号:82442253 上传时间:2023-03-25 格式:PPT 页数:68 大小:309KB
返回 下载 相关 举报
MATLAB外部接口编程第4章课件.ppt_第1页
第1页 / 共68页
MATLAB外部接口编程第4章课件.ppt_第2页
第2页 / 共68页
点击查看更多>>
资源描述

《MATLAB外部接口编程第4章课件.ppt》由会员分享,可在线阅读,更多相关《MATLAB外部接口编程第4章课件.ppt(68页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、4.1 MEX文件简介文件简介 4.2 管理管理MATLAB数据数据4.3 可视化创建可视化创建MEX文件文件4.4 MEX文件示例文件示例练习练习 第4章 创建Fortran语言MEX文件 4.1 MEX 文文 件件 简简 介介 4.1.1 4.1.1 简单的简单的MEXMEX文件示例文件示例在详细介绍Fortran语言MEX文件的编写方法之前,首先查看一个简单的Fortran语言MEX源文件,通过该文件了解Fortran语言MEX文件的基本创建过程。下面是该文件的源代码。mex mexHelloWorld.f 如果编辑的应用程序没有任何错误,则MATLAB命令行中不会显示任何消息;否则,在

2、MATLAB命令行中将显示相应的错误消息提示。如果出现编译错误,请仔细查看键入的源程序代码,修改错误直到编译通过为止。另外,再次强调配置编译器的时候选择MATLAB支持的Fortran语言编译器。编译的结果是创建出MATLAB的MEX文件,可以在MATLAB命令行下键入what指令查看当前路径下是否具有MEX文件。whatMEX-files in the current directory D:TempmexHelloWorld 接着,运行创建的MEX文件,在MATLAB命令行中键入下面的指令:mexHelloWorldHello MATALB World!4.1.2 MEX4.1.2 MEX

3、源文件的基本结构源文件的基本结构花费一点时间查看一下Fortran语言MEX源文件的基本结构。Fortran语言MEX源文件是标准的Fortran语言源文件,建议读者在创建Fortran语言MEX源文件的时候使用Fortran 77或者Fortran 90的语言标准,以符合不同Fortran编译器的要求,这样编写出来的源代码就会具有比较好的可移植性。从程序的第001行开始到006行,都是Fortran语言MEX源文件入口函数的声明部分:C 入口函数 subroutine mexFunction(nlhs,plhs,nrhs,prhs)C-C参数声明 integer plhs(*),prhs(*

4、)integer nlhs,nrhsmexFunction函数类似C语言源文件的main函数,它是MEX文件的入口函数。当在MATLAB命令行中执行MEX函数时,MATLAB解释器将从此函数处开始执行MEX代码。该入口函数的输入参数有四个,其意义分别是:nlhs:表示输入参数的个数。Plhs:mxArray类型的指针数组,表示MEX函数的输入参数。Nrhs:表示输出参数的个数。Prhs:mxArray类型的指针数组,表示MEX函数的输出参数。其实上述输入、输出参数的名称非常容易记忆,lhs代表Left hand parameters,rhs代表right hand parameters,n代表

5、number,p代表pointer。这里的左手和右手如何划分呢?例如在MATLAB中调用求伯特图的函数时,可以这样调用:mag,phase,w=bode(sys)这里以“=”为分界,左边的参数mag、phase和w为输出参数,即左手参数,而等号右边的参数sys,为输入参数,即右手参数。入口函数之后就是Fortran语言MEX源文件的程序主体部分了,在这里需要完成MATLAB数据的获取和内存的分配,调用相应的计算子程序或者函数,完成MEX文件的计算工作,最后将必要的输出返回给MATLAB。程序的结尾是Fortran语言的特别要求,必须有return和end关键字作为Fortran语言源程序的结束

6、。4.2 管理管理MATLAB数据数据 相比较而言在C语言中管理MATLAB的数据是比较容易的,而在Fortran中,由于受到编程语言本身的限制,就没有C语言那么灵活的方法,不过MATLAB还是提供了相应的mx函数用于Fortran语言程序的开发。注意,这些Fortran语言的mx函数不仅可以用于MEX文件的编写,而且还可以用于其它的应用程序开发。首先,查看一个Fortran语言MEX文件的应用实例,该例子是对例4-2simple.c使用Fortran语言重新编写而得的。mex simple.f simple?One output required.Error in=D:Tempsimple.

7、dll y=simpley=1 3 5 2 4 6 与C语言的mx函数不同,在MATLAB提供的Fortran语言mx函数中专门有十几个函数用来完成MATLAB数据指针的操作,分别可以用来操作字符串、双精度数组以及稀疏矩阵等。例如在例4-2的代码中使用了操作双精度数据的mxCopy函数。另外,在MATLAB的帮助文档中也提供了很多丰富的Fortran语言的应用实例,分别说明了操作各种数据的方法,请读者仔细阅读相应的帮助文档信息。4.3 可视化创建可视化创建MEX文件文件 可视化创建Fortran语言的MEX文件需要使用可视化的Fortran开发环境,这里笔者推荐使用Compaq Visual

8、Fortran,它的图形化开发界面和Visual Studio 6的界面保持一致,使用起来也和Visual C+6一样,几乎可以做到无缝的过渡,也就是熟悉使用Visual C+6的用户,基本上不需要什么额外的工作,就可以利用熟悉的Fortran语言开发应用程序了。图4-1 创建Fortran语言项目文件 在“Project name”处设置项目的名称为“mexfilename”,单击“OK”按钮创建新的工程项目。注意:如果用户的计算机上安装了Visual C+和Compaq Visual Fortran,则两种开发工具共用一种开发界面,不过在具体开发应用程序的时候,分别使用自己的高级语言编译器

9、。然后,在弹出的对话框中选择“An empty DLL application”单选框,如图4-2所示。图4-2 选择创建空DLL文件应用 单击“Finish”按钮,完成项目的创建。创建新的项目之后,则需要向项目中添加资源文件 mexversion.rc,该文件位于%MATLABROOT%externinclude路径中,该文件定义了MATLAB的MEX文件版本信息,然后再添加MEX源文件,例如simple.f。第三步,创建DEF文件,该文件的内容如下:LIBRARY MYFILE.DLLEXPORTS _MEXFUNCTION16注意,在这里创建的DEF文件和在创建C语言MEX文件时定义的D

10、EF文件的内容不同。第四步,执行“Tools”菜单下的“Options”命令,在弹出的对话框中设置Library的路径,将E:MATLAB6p5p1EXTERNLIBWIN32DIGITALDF60路径添加到该对话框中,如图4-3所示。图4-3 设置Library路径 按Alt+F7键,或者执行“Project”菜单下的“Setting”命令,在弹出的对话框中将必要的Lib文件添加在Link页的属性设置中。所谓必要的Lib文件,主要是mx函数的libmx.lib和mex函数的libmex.lib,如果使用MAT数据文件应用函数,则还需要将libmat.lib文件添加到属性中。关于MAT数据文件

11、的应用将在第5章中详细讲解。设置Link属性对话框,如图4-4所示。图4-4 设置Link属性,添加必要的Lib文件 单击“OK”按钮结束属性的设置,然后,设置C/C+预处理编译命令,设置该属性为MATLAB_MEX_FILE。接着就可以直接按F7键,或者执行“Build”菜单下的“Build mexfilename.dll”命令,来完成MEX文件的创建。如果用户需要在Compaq Visual Fortran的开发环境中进行Fortran语言的MEX文件可视化调试,则可以在创建完毕工程项目后,在源文件中需要设置断点的位置设置断点,然后执行“Build”菜单下“Start Debug”子菜单下

12、的“Go”命令,或者直接按F5键,这时Compaq Visual Fortran将弹出对话框,如图4-5所示。图4-5 设置可执行文件的对话框 4.4 MEX 文文 件件 示示 例例 mex fcreatesparse.f A=fcreatesparseA=(1,1)3 (4,1)1 (1,3)10 (2,3)-7 (3,3)2 (4,4)-2 full(A)ans=3 0 10 0 0 0 -7 0 0 0 2 0 1 0 0 -2 mex times2.f A=1+2i,1-2i;2+1i,2-1iA=1.0000+2.0000i 1.0000-2.0000i 2.0000+1.0000i

13、 2.0000-1.0000i B=times2(A)B=2.0000+4.0000i 2.0000-4.0000i 4.0000+2.0000i 4.0000-2.0000i C=times2(B(1:4)C=Columns 1 through 3 4.0000+8.0000i 8.0000+4.0000i 4.0000-8.0000i Column 4 8.0000-4.0000i whos Name Size Bytes Class A 2x2 64 double array(complex)B 2x2 64 double array(complex)C 1x4 64 double ar

14、ray(complex)Grand total is 12 elements using 192 bytes 可以看到,例4-4的代码可以处理矩阵和向量,但输入的参数必须为复数。mex parsestring.f str=parsestring(A B C D E F G H I J K L M N!)str=!JENIDMHCLGB KFA str=parsestring(ABCDEFGHIJKLMNOPQRSTUVWXYZ1234)str=4TJ2RHZPFXNDVLB mex mexlocked.f%锁定MEX文件 mexlocked(1)MEX-file is locked%不允许再次

15、锁定 mexlocked(1)Warning:MEX-file is already locked%从内存中清除MEX文件操作 clear all%无法成功,因为MEX文件被锁定 mexlocked(1)Warning:MEX-file is already locked%解锁 mexlocked(-1)MEX-file is unlocked%再次清除 clear allExit the MEX file%操作成功!练练 习习 1.比较C语言MEX文件和Fortran语言MEX文件的异同点。2.使用Fortran语言MEX文件,重新编写例3-10设置图像属性的代码,要求能够在MEX文件中直接创建曲线,并且设置曲线的属性,可以在集成开发环境中完成程序的编译过程。3.使用Fortran语言MEX文件编写第2章练习3的代码,创建整数类型的矩阵即可。4.编写程序完成下列功能:编写程序完成下列功能:调用MATLAB指令,根据输入的参数计算矩阵的特征值和特征向量(如果输入的参数是双精度类型矩阵,则利用MATLAB的矩阵运算指令)。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁