Fortran和Matlab混合编程简介

合集下载

MATLAB与FORTRAN接口技术

MATLAB与FORTRAN接口技术
或程序子函数 。 ME X文件的使用极为方便, 只需在提 示符下键入 ME X 文件 名即可 ,与 M T AB 的 内建 函数 的调 用方式完全相 A L 同 , 当 执行 ME 文 件 时 ,M T AB 系 统 将 首先 搜 索 X A L A L B系统的所有可搜索路径 ( 过路径浏览器设置 ) M TA 通 ,
n e e l sn h i tg rn h , r s
0 引言
MA L T AB 是一种面 向科学与工程计算 的高级语言 ,凭 借其强大的科 学计 算与可视 化功能, 简单易用的开放式可扩 展环境,取得了在矩 阵代数 、数 值计算、数 字信号处理、动 态仿真 、神经 网络控制等领 域的广泛应用 。: 言简洁 , 它语 使 用 方 便 灵 活 , 程 序 书 写 形 式 自由 , 图 形 功 能 强 大 。 MA L T AB 扩充能力强,交互性好 ,有丰富的库函数 ,它包 含了大量 的 MA L T AB 与 CF R R /O T AN 语言之间的接 口函 数, 在进行复杂数学运算 时可以直接 调用 ,这些接 口函数是 MA L T AB 的一个非常重要 的组成部分 。虽然 MA L T AB 是 个 完全独立 的编程和数据运算 的集成环境 , 使用它可以方 便地 完成许 多工作 ,但是 ,很多 时候仅靠 MA L T AB环境 还 是不能很 好的完成任 务,例 如:MA AL 中程 序循 环,其 T B 它语言编写 的算法 的移植要重新编写 M 文件 等。 FRR O T AN 语言是传统的数值处理语言,处理速度高, 编程简便 , 其强大的数值 计算 能力和长 期积 累的大量 的科 学 计算程序库及工程应用软件 , 始终 占据 着科 学和 工程 计算 领 域 的重要地位 , 有很 多源代码资源可供使用 , 它在 图形功 但 能方而有较大 的不足 。

第15章MATLAB与其他编程语言结合

第15章MATLAB与其他编程语言结合

第15章MATLAB与其他编程语言结合第1 5章M A T L A B与其他编程语言结合M AT L A B可以和其他编程语言一起使用,可以调用 F O RT R A N或C程序。

反过来F O R T R A N或C也可以调用M A T L A B程序。

这样,快速的编译程序就可以利用M A T L A B中强大的矩阵或图形命令,通过编写部分的C或F O R T R A N程序,并进行编译,就可以避免M A L TA B 程序的瓶颈现象。

M A T L A B还可以结合使用其他的应用程序,如Microsoft Word for Wi n d o w s。

这将在本章的最后一节讨论,这主要取决于计算机的系统和安装的应用程序。

15.1 介绍M A T L A B和F O R T R A N或CM A T L A B可以被F O R T R A N或C语言程序调用,它也可以调用F O R T R A N或C语言程序。

如果M A T L A B程序运行速度很慢,后者对此很有用。

因为M A T L A B是一个解释性语言,所以当运行程序时就是解释它的命令。

这样有时会导致程序的运行速度很慢,如f o r- l o o p s循环。

在F O RTRAN 77和C中可以使用M AT L A B库,也可以用F O RTRAN 90或C++对它们进行链接。

除非特别需要,一般不推荐编写F O R T R A N或C程序。

M A T L A B的优点在于可以用高级的形式描述出操作,而程序员不必担心循环的次数和一些其他细节问题。

被M A T L A B调用的程序必须在编译后转换成M E X文件,这样才能被M A T L A B调用。

在编译时它们和M文件一样使用。

在2 .8节中讲到了由M A T L A B创建的二进制文件。

它们是以M A T文件形式被调用的,在C 或F O R T R A N语言的库中有用来读和写二进制文件的程序。

FORTRAN调用MATLAB画图

FORTRAN调用MATLAB画图

注意:在64位的机器里可能要将 engOpen,mxCreateDoubleMatrix,mx GetPr这些返回指针的函数以及ep,T 这些指针声明成integer*8

FORTRAN调用MATLAB画图
308工作室荣誉出品 308工作室荣誉出品
Version1.0 07/10/08
调用MATLAB引擎的常用函数 引擎的常用函数 调用
engOpen 打开matlab引擎 engClose 关闭matlab引擎 mxCreateDoubleMatrix 创建双精度数组 mxCopyReal8ToPtr 给新创建的数组赋值 mxGetPr 返回数组的实部 engPutVariable 将新创建数组植入matlab引擎 engEvalString 向matlab传达命令 engGetVariable 返回matlab中某数组的指针 mxCopyPtrToReal8 得到matlab中某数组的值
fortran调用matlab画图308工作室荣誉出品version10071008engopen打开matlab引擎engclose关闭matlab引擎mxcreatedoublematrix创建双精度数组mxcopyreal8toptr给新创建的数组赋值mxgetpr返回数组的实部engputvariable将新创建数组植入matlab引擎engevalstring向matlab传达命令enggetvariable返回matlab中某数组的指针mxcopyptrtoreal8得到matlab中某数组的值matlab注意

matlab调用fortran

matlab调用fortran

科学计算中如果需要同时用到fortran和matlab,通常为在MATLAB中调用Fortran。

由于compact fortran和powerstation等编译器在win环境下陆续无法兼容,目前一般使用visual studio(vs)加intel visual fortran(ivf)的组合编译环境。

网上讲解调用方法语焉不详,以下是我自己探索的方式。

1.版本选择64Win7环境下,可行的一种搭配是visual studio 2012+ivf2013xe+matlab2013a,似乎可以将vs和ivf同时降2年,matlab如使用matlab2012等可能需要修改环境路径,百度。

Win8环境中则不可以使用vs2010(我尚未成功过0_0)。

2.安装次序先安装vs,再安装ivf,建议最后安装matlab。

如果没有其他需求,vs可以不安装除c++之外的可选功能,matlab也可以自选。

3.调用过程a)首先,通过开始栏的ivf来打开matlab,即:开始,intel parallel studio xe2013,command prompt,parallel ……XE,打开窗口命令,输入matlabb)Matlab中输入mex –setup,注意有空格。

给出编译器选择Please choose yourcompiler for building external interface (MEX) files: Would you like mex to locateinstalled compilers [y]/n?选择n,然后可以自选配置,如Select a compiler:[1] Borland C++Builder version 6.0[2] Borland C++Builder version 5.0[3] Borland C++Builder version 4.0[4] Borland C++Builder version 3.0……这里输入数字,选择ivf2013(with visual C++ 2012 linker)c)弹出如下选择:Your machine has a Digital Visual Fortran compiler located atC:\Program Files\……. Do you want to use this compiler [y]/n?选择n自行找到位置,方法是打开开始,intel parallel studio xe 2013,intelcompiler xe,using VS2012,右键之,打开文件位置,复制即得到地址。

MATLAB与FORTRAN共享数据的实现

MATLAB与FORTRAN共享数据的实现

MATLAB与FORTRAN共享数据的实现
徐屾;于波
【期刊名称】《现代计算机(专业版)》
【年(卷),期】2001(000)006
【摘要】MATLAB具有强大的矩阵计算和绘图功能,而FORTRAN在大规模的数值计算上仍占有一定的优势.使用MATLAB强大的矩阵计算与绘图功能,或借用FORTRAN大规模的数值计算能力,在应用程序的开发或数值计算、分析中,我们就可以节省大量的时间与精力.
【总页数】3页(P78-80)
【作者】徐屾;于波
【作者单位】武汉大学动力机械工程学院,武汉,430072;武汉大学动力机械工程学院,武汉,430072
【正文语种】中文
【中图分类】TP3
【相关文献】
1.MatLab与Fortran混合编程实现结构优化和可靠性分析 [J], 赵秀丽;易平
2.Fortran与Matlab混合编程实现溴化锂水溶液的物性计算可视化 [J], 王书中;由世俊;孙贺江;李秋生
3.VC++调用Fortran及MATLAB程序混合编程实现 [J], 马清华;王明海
4.Matlab与Fortran混合编程之DLL实现方法 [J], 潘克家;汤井田;郑洲顺
paq Visual Fortran与Matlab混合编程实现小波域地震信号多尺度分析[J], 徐天吉;程冰洁
因版权原因,仅展示原文概要,查看原文内容请购买。

MATLAB与FORTRAN接口技术

MATLAB与FORTRAN接口技术

MAT LAB与F ORT RAN接口技术枣庄学院数学与信息科学系 赵晓艾[摘 要]介绍了动态链接函数库M EX文件,MAT文件及MAT LAB引擎的调用原理,利用MAT LAB和F ORT RAN接口技术实现F ORTRAN程序计算结果的可视化过程。

[关键词]MAT LAB F ORTRAN AP I MAT LAB是一种面向科学与工程计算的高级语言,凭借其强大的科学计算与可视化功能,简单易用的开放式可扩展环境,取得了在矩阵代数、数值计算、数字信号处理、动态仿真﹑神经网络控制等领域的广泛应用。

:它语言简洁,使用方便灵活,程序书写形式自由,图形功能强大。

MAT LAB扩充能力强,交互性好,有丰富的库函数,它包含了大量的MAT LAB与C/F ORTRAN语言之间的接口函数,在进行复杂数学运算时可以直接调用,这些接口函数是MAT LAB的一个非常重要的组成部分。

虽然MAT LAB是一个完全独立的编程和数据运算的集成环境,使用它可以方便地完成许多工作,但是,很多时候仅靠MAT LAB环境还是不能很好的完成任务,例如:MAT LAB中程序循环,其它语言编写的算法的移植要重新编写M文件等。

F ORT RAN语言是传统的数值处理语言,处理速度高,编程简便,其强大的数值计算能力和长期积累的大量的科学计算程序库及工程应用软件,始终占据着科学和工程计算领域的重要地位,有很多源代码资源可供使用,但它在图形功能方面有较大的不足。

MAT LAB提供的AP I(App licati on Pr ogra m I nterface)弥补了彼此的不足,它支持MAT LAB与外部数据和程序的交互。

MAT LAB接口包括:在MAT LAB环境中调用其它语言编写的程序和算法,通过M EX文件实现;MAT LAB与其它编程环境的数据交互,通过MAT文件实现;其它编程环境使用MAT LAB的计算绘图功能,通过MAT LAB计算引擎实现。

Matlab混合编程(清华BBS)

Matlab混合编程(清华BBS)

Matlab混合编程(清华BBS)一.matlab与vc混编1.通过mcc将matlab的m文件转化为cpp,c文件或dll供vc调用:这方面的实现推荐精华区Zosco和ljw总结的方法(x-6-1-4-3-1和2)vc的设置请参看精华区x-6-1-4-3-5,通过这种设置可以调用c math library和c++math library,C++ mathlib的pdf在精华区x-6-1-10里2.通过matlab的combuilder将m文件做成com组件,供vc调用参看精华区x-6-1-53.通过matcom:这个mathworks公司已经不在出新版本了,而且他的功能可能用第1和第2种方法代替推荐使用前两种方式,matcom的使用精华区有一部分,从x-6-1-4下找二.matlab与vb混编1.mathworks公司专为vb开发了一个com组件:matrixvb,里面有大量的数学函数.这个组件需要另装,请在安装盘上或网上下载,注册码参看精华区x-6-1-3-8装好这个组件后,他自带了两个pdf文件,用法及其能用的函数全在上面,推荐阅读这两个pdf文件,精华区的位置是x-6-1-4-62.通过matlab的combuilder将m文件做成com组件,供vb调用参看精华区x-6-1-5三.matlab与.net混编在6.1版本以前一直没有这方面的讨论,用mcc编成dll或cpp,c文件应该可以,由于.net调用com组件很方便,推荐使用通过matlab的combuilder将m文件做成com组件,供 .net调用,参看精华区x-6-1-5四.试试通过matlab的combuilder做成com组件的方式实现混编,这也是mathworks公司推荐的方法,他不受语言和编译器的局限,相信高版本的matlab将在这方面有更大的改进这方面的介绍参看精华区x-6-1-5五.其他的语言或编译器与matlab混编精华区x-6-1-4里有一些相关的介绍,不全,还请用过的大侠总结这方面的内容。

fortran与matlab混合编程实现溴化锂水溶液的物性计算可视化

fortran与matlab混合编程实现溴化锂水溶液的物性计算可视化

fortran与matlab混合编程实现溴化锂水溶液的物性计算可视化以溴化锂水溶液为工质的吸收式制冷既可利用蒸气,热水,燃气、燃油等能源,还可利用工业余热、废热、太阳能、地热能等低品味能源作为动力,同时工质对大气臭氧层无破坏作用,这些节能、环保方面独特的优势使得溴化锂吸收式制冷具有了广阔的市场和良好的发展前景。

随着溴化锂吸收式制冷机组在技术与应用上的不断发展,人们对机组的优化设计、变工况条件下最佳运行参数的动态调整和自动控制等方面提出了更高的要求,也越来越多地要求利用计算机进行设计和计算。

传统的这类计算都要借助于溴化锂水溶液的物性数据图表,从图表上查出或手算出有关物性参数和热力过程特性数据。

但是这种方法繁琐,费时,误差较大,已经远远不能满足现在的应用需求,为此,能不能找到一种可以动态绘图,自动捕捉状态点,鼠标实时显示状态点参数,并根据已知的的状态参数求其他未知的参数,根据用户需要直接绘制溴化锂吸收式制冷循环流程图的方法,已成了急需解决的问题。

基于此,本文尝试从满足以上几种功能出发,利用FORTRAN与Matlab混合编程,充分结合Fortran运算速度快,Matlab矩阵计算及图形处理功能强的优点,实现了溴化锂水溶液物性计算的可视化。

1 溴化锂水溶液物性计算可视化的基本思想使用过Fortran、C和C++等传统的高级语言进行编程的读者可能都知道,在对矩阵,运算尤其是复杂的绘图操作时,程序设计将是一件非常困难,又不能很好的实现预想效果的任务,Matlab(又称Matrix Labrotary)就是Mathworks 公司推出的最初用于解决该问题的以矩阵(Matrix)和阵列(Array)为基本编程单元的,拥有完整的控制语句、数据结构、函数编写与调用格式和输入输出功能的具有面向对象程序设计特征的高级程序语言,其强大的科学计算与可视化功能,简单易用的开放式可扩展环境以及30 多个面向不同领域而扩展的工具箱(TOOLBOX)支持,包括了通信系统、信号处理、图象处理、小波分析、鲁棒控制、系统辨识、非线性控制、模糊控制、神经网络、优化理论、样条、商用统计分析等大量现代技术学科的内容,使得MATLAB 在许多科学领域中成为计算机辅助设计与分析、算法研究和应用开发的基本工具和首选平台。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二 Fortran和Matlab混合编程的 两种基本方式
第一种:Fortran调用Matlab命令 第二种:Matlab调用Fortran程序
call MATLAB engine
Fortran
Maltab
Creating Fortran MEX-Files
基本思想
Fortran数据
解包 接口函数 打包
.计算结果可视化 (Matlab)
.调用已有函数库 (Matlab)
内容
一 Fortan和Matlab优缺点比较
二Fortran和Matlab混合编程的基本方式 (1)Fortran和Matlab编程比较 (2)Fortran调用Matlab命令 (3)Matlab调用Fortran程序
三参考资料
ComplexFlag) integer*4 m, n, ComplexFlag
integer*4 function mxGetPr(pm) integer*4 pm
subroutine mxDestroyArray(pm) integer*4 pm
subroutine mxCopyPtrToReal8(px, y, n) real*8 y(n)
一 Fortan和Matlab优缺点比较
(从数值计算角度)
程序
优点
缺点
Fortran
计算速度快
计算结果不能直 接可视化
Matlab
语言简洁,函数 丰富,调试容易, 计算结果可以方 便地实现可视化
计算速度慢
优点 Fortran Matlab
Fortran+Matlab
.计算速度快 (Fortran)
谢谢!
call MATLAB engine
Fortran
Maltab
函数分类
A engie打开和关闭 B 输出数据(Fortran->Matlab) C 执行matlab命令,调用Matlab程序 D 输入数据(Matlab->Fortran)
函数分类
A engie打开和关闭 B 输出数据(Fortran->Matlab) C 执行matlab命令,调用Matlab程序 D 输入数据(Matlab->Fortran)
character*(*) startcmd
integer*4 function engClose(ep) integer*4 ep
integer*4 function engPutVariable(ep, mp) integer*4 ep, mp
integer*4 function engGetVariable(ep, name) integer*4 ep
character*(*) nam
integer*4 function engEvalString(ep, command) integer*4 ep
character*(*) command
Fortran MX-Functions
integer*4 function mxCreateDoubleMatrix(m, n,
二Fortran和Matlab混合编程的两种基本方式 (1)Fortran和Matlab编程比较 (2)Fortran调用Matlab命令 (3)Matlab调用Fortran程序
三参考资料
三 参考资料
1)《Fortran95程序设计》 彭国伦 编著, 中国电力出版社 2)《matlab 5.x入门与提高》 龚剑 朱亮 编著,清华大学出版社 3)Matlab联机帮助文件
执行
EngEvalString
mc(string)
输入 MxCopyPtrToReal8
EngGetVariable MxGetPr
f2m(fdata,mstring,row,col)
Fortran Engine Functions
integer*4 function engOpen(startcmd) integer*4 ep
Fortran和Matlab 混合编程简介
陆华剑 2003年7月23日
内容
一 Fortan和Matlab优缺点比较
二 Fortran和Matlab混合编程的两种基本方式 (1)Fortran和Matlab编程比较 (2)Fortran调用Matlab命令 (3)Matlab调用Fortran程序
三 参考资料
Matlab数据
两种方式的优缺点比较
主程序
优点
缺点
第一种: Fortran
第二种: Matlab
可以编写复杂 快速的计算程 序,仅让 Matlab负责数 据显示
同时运行 Fortran和 Matlab程序
仅需Matlab环 境
调试不太方便
(1)Fortran和Matlab编程比较
A 数据类型(数值计算中常用)
函数
子过程
函数
简单 matlab 模块中对应的子过程
引擎
EngOpen
startmatlab()
EngClose
closematlab()
输出
MxCopyReal8ToPtr MxDestroyArray
MxCreateDoubleMatrix MxGetPr
EngPutVariable
f2m(fdata,mstring,row,col)
再编译,就通过了,执行该程序,可以得到如下结果。
执行结果
(3)Matlab调用Fortran
Creating Fortran MEX-Files
Matlab
Fortran
基本思想
(摘自Matlab帮助文件)
编译和执行
编译,生成timestwo.dll 调用函数 执行结果
内容
一 Fortan和Matlab优缺点比较
integer*4 px, n
subroutine mxCopyReal8ToPtr(y, px, n) real*8 y(n)
integer*4 px, n
一个简单 得程序模 块例子
编译设置
如果直接编译,会有如上错误
添加lib文件
这时,仅仅需要添加lib文件。 方法为:Project->Add to Project->Files, 选择Matlab目录 下external\lib\win32\digital\df60\中所有的lib文件即可。
程序 Fortran Matlab
Integer (4B)
数据类型
Real (4B) Double (8B)
Real(8) (8B)
程序 Fortran Matlab
B 函数
函数 子过程 subroutine 自定义函数 function
命令文件 函数文件 function
(2)Fortran调用Matlab
相关文档
最新文档