Matlab与Fortran的混合编程及其应用.pdf

Matlab与Fortran的混合编程及其应用.pdf

ID:51493126

大小:521.88 KB

页数:5页

时间:2020-03-25

Matlab与Fortran的混合编程及其应用.pdf_第1页
Matlab与Fortran的混合编程及其应用.pdf_第2页
Matlab与Fortran的混合编程及其应用.pdf_第3页
Matlab与Fortran的混合编程及其应用.pdf_第4页
Matlab与Fortran的混合编程及其应用.pdf_第5页
资源描述:

《Matlab与Fortran的混合编程及其应用.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第25卷第1期桂林工学院学报Vol.25No.12005年1月JOURNALOFGUILINUNIVERSITYOFTECHNOLOGYJan12005文章编号:1006-544X(2005)01-0076-05Matlab与Fortran的混合编程及其应用1,2刘羽(11中国地质大学地球物理与空间信息学院,武汉430074;21桂林工学院电子与计算机系,广西桂林541004)摘要:介绍和分析了Matlab与Fortran混合编程的两种方式,即利用Mex文件和利用Matlab引擎;给出了其具体实现方法,并讨论了各自的优缺点和适用情况;给出了一个物探数据可视化

2、的应用实例.分析和实验结果表明:通过Matlab与Fortran混合编程,不仅可以利用Mat2lab强大的图形功能和丰富的工程计算函数,还能发挥Fortran数值运算高效的特点和利用其原有的大量程序资源,从而使编程更为灵活、高效.如Fortran程序中有大量交互输入,宜采用Matlab引擎混合编程方式;如Fortran中要调用的Matlab函数较多,则应考虑采用Mex文件混合编程.关键词:Matlab;Fortran;混合编程;接口中图分类号:TP311文献标识码:AMatlab提供了强大的矩阵运算和图形处理功Fortran来说,常用的是利用Mex文件和利用

3、Mat2能以及大量工程计算领域中常用的数值处理函数lab引擎两种方式:前者是以Matlab为主调程序,和高效工具箱,不仅编程效率很高,适合数据处调用Fortran代码编译后的Mex文件,此种方式必理及结果的可视化,而且在理论和算法上成熟可须在Matlab环境下运行;后者则是用Fortran设计靠.但由于是一种解释型语言,Matlab也有不足应用程序框架,以其编译的程序作为前端客户机,之处,如执行次数较多的循环特别是多层嵌套循通过调用Matlab引擎,实现后台与Matlab服务器环时速度较慢,不太适合做大规模的数值计算和的连接和动态通信.此种方式下,程序可在W

4、in2[1]分析.Fortran语言是传统的数值处理语言,处dows下任何地方运行,但仍需要Matlab在后台运理速度高,编程简便,有很多源代码资源可供使行.因此无论采用哪种方式,运行时都必须具有用,但绘图功能不强,在可视化方面需要编制复Matlab的支持.杂的代码.因此,用两种语言混合编程,可以充112数据传递方式分利用Matlab中丰富的函数及Fortran语言原有的多种语言的混合编程中,最重要的是要解决它算法程序,弥补彼此的不足,这已成为当前科学们之间的数据传递问题.Matlab和Fortran语言的运问题和工程问题的一种良好解决方案.算单位不同,前者

5、是基于矩阵(mxArray结构体),后者是基于数,两者的数据类型无法直接匹配,必1Matlab与Fortran混合编程及数据须通过Matlab提供的指针变量来进行交互.其基本传递方式原理:Matlab首先将需要传递的mxArray结构体的111混合编程方式内存地址作为一个整型数值传给Fortran程序,然后Matlab提供了多种途径及相应的API(应用程在Fortran程序中调用Matlab引擎提供的访问函序接口)函数实现与其它语言的混合编程,但就数,这些函数自动地将传给它的这个整数值作为地收稿日期:2004-11-01基金项目:广西自然科学基金资助项目(桂

6、科基[0339070])作者简介:刘羽(1961-),男,博士研究生,高级工程师,研究方向:数据处理、并行计算.第25卷第1期刘羽:Matlab与Fortran的混合编程及其应用77址去读取或写入mxArray结构体中的相应数据.传integerx_pr,y_printegernlhs,nrhs统的Fortran77不支持指针变量,因此必须借助integermxGetM,mxGetN,mxIsNumericMatlab的API函数来完成传递.若采用的编译器支integerm,n,size持%vol结构(如Fortran90),则可省去对API函数real38

7、x,y的调用而直接使用指针数据,效率更高.为更具普m=mxGetM(prhs(1))n=mxGetN(prhs(1))遍性,本文以Fortran77为标准进行讨论.c计算输入数据的大小size=m3n2混合编程c产生输出矩阵plhs(1)=mxCreateFull(m,n,0)211利用Mex文件实现混合编程c获取输入参数指针Mex是Matlab的可执行程序,在Windows环境x_pr=mxGetPr(prhs(1))中,它是扩展名为DLL的动态链接库,可以在Mat2c获取输出参数指针[2]y_pr=mxGetPr(plhs(1))lab中直接调用.For

8、tranMex文件通常由两个显c将输入数据传送到x以

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。