当前位置:文档之家› Fortran和Matlab混合编程简介

Fortran和Matlab混合编程简介


二 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
相关主题