Fortran调用Matlab引擎的简易步骤与实例

一、前言


1、这是FORTRAN和MATLAB混编的一种办法,当然还有其它办法,根据程序特点,不同的办法有各自的好处;
2、这里做简要介绍,可以进行MATLAB的简单调用。更复杂的应用需要参考其它资料;
3、欢迎更正和更新。

二、准备工作


1、将例如“D:\Program Files\MATLAB\R2010b\bin”的MATLAB安装目录加到计算机环境变量-用户变量-path中,重启系统;
2、将例如“D:\Program Files\MATLAB\R2010b\extern\lib\win32\microsoft”中的所有.lib文件加入到新建的Fortran工程中;


三、具体编程


1、打开MATLAB的engine;


a)        申明:INTEGER,EXTERNAL :: engOpen;INTEGER :: EP
b)        EP  = engOpen(‘MATLAB’) !EP =0: 启动失败;EP/=0:启动成功;


2、将Fortran数据传递给MATLAB;


a)        申明:INTEGER,EXTERNAL :: mxCreateDoubleMatrix,mxGetPr,engPutVariable;INTEGER :: T,Status;REAL*8 :: Variables(M,N)
b)        T = mxCreateDoubleMatrix(M,N,0);!申请内存,建立矩阵
c)        CALL mxCopyReal8ToPtr(Variables, mxGetPr(T),M*N);!将
d)       Status = engPutVariable(EP,'x',T);!=0赋值成功;/=0赋值失败


3、调用MATLAB程序,执行MATLAB命令;


a)        申明:INTEGER,EXTERNAL :: engEvalString;CHARACTER*100 :: STRING;
b)        STRING = ‘matlat 命令行’,例如’y = 2*x;’ ! x为2-d)中设置的变量名称;
c)        执行 Status = engEvalString(EP,STRING);!Status = 0执行成功;Status /=0 执行失败;
d)       若MATLAT命令行很多,b)和c)可多次进行。


4、将MATLAB数据传递给Fortran。


a)        申明:INTEGER,EXTERNAL ::  engGetVariable;REAL*8 :: output (M,N)
b)        Status = engGetVariable(ep,"y")  !y为3-b)中设置的变量名;
c)        CALL mxCopyPtrToReal8(mxGetPr(Status),output,M*N) !MATLAB的y变量传给了FORTRAN的output变量。


5、关闭MATLAB的engine;


a)        申明:INTEGER,EXTERNAL ::  engClose;
b)        STATUS = engClose(EP) ! =0成功关闭;/=0关闭失败;



四、常用函数说明


1、engOpen : 打开MATLAB引擎;
2、engClose:关闭MATLAB引擎;
3、mxCreateDoubleMatrix :创建双精度数组;
4、mxCopyReal8ToPtr:给新创建的数组赋值;
5、mxGetPr:返回数组实部;
6、engPutVariable:将新创建数组植入MATLAB引擎;
7、engEvalString:向MATLAB传达命令;
8、engGetVariable:返回MATLAB中某数组的指针;
9、mxCopyPtrToReal8:得到MATLAB中某数组的值。


五、注意


传给MATLAB的命令行中的变量大小写是被区分的,程序中一定要保持变量名大小写统一。例如第3步执行“y = 2*x”,第2步输入x,不能写成‘X’,第4步输出y,不能写成‘Y’。

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空