Fortran調(diào)用Matlab引擎的簡單辦法

一、前言
1、這是FORTRAN和MATLAB混編的一種辦法,當(dāng)然還有其它辦法,根據(jù)程序特點,不同的辦法有各自的好處;
2、這里做簡要介紹,可以進(jìn)行MATLAB的簡單調(diào)用。更復(fù)雜的應(yīng)用需要參考其它資料;
3、歡迎更正和更新。

二、準(zhǔn)備工作
1、將例如“D:\Program Files\MATLAB\R2010b\bin”的MATLAB安裝目錄加到計算機(jī)環(huán)境變量-用戶變量-path中,重啟系統(tǒng);
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數(shù)據(jù)傳遞給MATLAB;
a)        申明:INTEGER,EXTERNAL :: mxCreateDoubleMatrix,mxGetPr,engPutVariable;INTEGER :: T,Status;REAL*8 :: Variables(M,N)
b)        T = mxCreateDoubleMatrix(M,N,0);!申請內(nèi)存,建立矩陣
c)        CALL mxCopyReal8ToPtr(Variables, mxGetPr(T),M*N);!將
d)       Status = engPutVariable(EP,'x',T);!=0賦值成功;/=0賦值失敗

3、調(diào)用MATLAB程序,執(zhí)行MATLAB命令;
a)        申明:INTEGER,EXTERNAL :: engEvalString;CHARACTER*100 :: STRING;
b)        STRING = ‘matlat 命令行’,例如’y = 2*x;’ ! x為2-d)中設(shè)置的變量名稱;
c)        執(zhí)行 Status = engEvalString(EP,STRING);!Status = 0執(zhí)行成功;Status /=0 執(zhí)行失??;
d)       若MATLAT命令行很多,b)和c)可多次進(jìn)行。

4、將MATLAB數(shù)據(jù)傳遞給Fortran。
a)        申明:INTEGER,EXTERNAL ::  engGetVariable;REAL*8 :: output (M,N)
b)        Status = engGetVariable(ep,"y")  !y為3-b)中設(shè)置的變量名;
c)        CALL mxCopyPtrToReal8(mxGetPr(Status),output,M*N) !MATLAB的y變量傳給了FORTRAN的output變量。

5、關(guān)閉MATLAB的engine;
a)        申明:INTEGER,EXTERNAL ::  engClose;
b)        STATUS = engClose(EP) ! =0成功關(guān)閉;/=0關(guān)閉失敗;

四、常用函數(shù)說明
1、engOpen : 打開MATLAB引擎;
2、engClose:關(guān)閉MATLAB引擎;
3、mxCreateDoubleMatrix :創(chuàng)建雙精度數(shù)組;
4、mxCopyReal8ToPtr:給新創(chuàng)建的數(shù)組賦值;
5、mxGetPr:返回數(shù)組實部;
6、engPutVariable:將新創(chuàng)建數(shù)組植入MATLAB引擎;
7、engEvalString:向MATLAB傳達(dá)命令;
8、engGetVariable:返回MATLAB中某數(shù)組的指針;
9、mxCopyPtrToReal8:得到MATLAB中某數(shù)組的值。

五、注意 
傳給MATLAB的命令行中的變量大小寫是被區(qū)分的,程序中一定要保持變量名大小寫統(tǒng)一。例如第3步執(zhí)行“y = 2*x”,第2步輸入x,不能寫成‘X’,第4步輸出y,不能寫成‘Y’。

原帖地址:http://fcode.cn/guide-125-1.html

登錄后免費查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP

4
3
4