java中沒有直接調用matlab的接口函數(shù)

java中沒有直接調用matlab的接口函數(shù)

ID:14148977

大?。?9.68 KB

頁數(shù):10頁

時間:2018-07-26

java中沒有直接調用matlab的接口函數(shù)_第1頁
java中沒有直接調用matlab的接口函數(shù)_第2頁
java中沒有直接調用matlab的接口函數(shù)_第3頁
java中沒有直接調用matlab的接口函數(shù)_第4頁
java中沒有直接調用matlab的接口函數(shù)_第5頁
資源描述:

《java中沒有直接調用matlab的接口函數(shù)》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫

1、java中沒有直接調用matlab的接口函數(shù),在通常的情況下我們是通過借用C++作為中間過程來實現(xiàn)的,使用C++主要是用c與matlab的結構實現(xiàn)c調用matlab的功能,將這些功能函數(shù)封裝成dll文件,用java語言調用所生成的dll文件,從而實現(xiàn)了調用matlab的功能。java調用c程序利用的是java的jni技術,即javanativeinterface。具體的過程為:1.首先,寫一個類:publicclassEng{static{??System.loadLibrary("Eng");???//(1)}publicnativevoidplottest();//(2)

2、}這個類實現(xiàn)的是調用后面生成的Eng.dll這個動態(tài)連接庫的功能。在dos環(huán)境下編譯javaEng.java編譯后使用jdk中的javah命令生成jni的頭文件javah-jniEng在本目錄下就生成了Eng.h這個頭文件2.打開vc++6.0新建一個dll的工程名字叫Eng,這個工程名必須和System.loadLibrary("Eng")中的一樣,因為編譯生成的dll的名字就是這個工程的名字。然后在vc++的環(huán)境中添加能夠調用matlab的功能所需要的lib和一些環(huán)境的設置。(1)Tools->Options->Directories中engine.h所在的路徑,筆者所使

3、用的路徑為:C:JDK1.5.0INCLUDE,在這個對話框中的"Showdirectoriesfor:"的下拉菜單中選擇LibraryFiles,然后添加庫文件的路徑,在筆者的計算機上的路徑是:E:MATLABEXTERNLIBWIN32MICROSOFTMSVC60。(2)Project->Settings->Link在Object/LibraryModules中加上庫文件連接:也就是自己手動添加三個文件分別是:libmx.liblibmex.liblibeng.lib(3)將通過javah生成的Eng.h文件拷貝到工程目錄中,然后再FileView中導入

4、到工程中,創(chuàng)建新的c++文件為Eng.cpp,用于實現(xiàn)用于上面的頭文件中的函數(shù)。指定了engine的頭文件所在的路徑,所以就可以包括這個頭文件了。同時加入其它的頭文件就可以了。具體的cpp文件內容為:/*Eng.h*/#include"engine.h"#include"stdlib.h"#include"stdio.h"#include"string.h"#include"windows.h"#include"Eng.h"staticdoubleAreal[6]={1,2,3,4,5,6};JNIEXPORTvoidJNICALLJava_Eng_plottest(JNIE

5、nv*eng,jobjectobj){Engine*ep;mxArray*T=NULL,*a=NULL,*d=NULL;charbuffer[30];double*Dreal,*Dimag;doubletime[10]={0,1,2,3,4,5,6,7,8,9};if(!(ep=engOpen(NULL))){??MessageBox((HWND)NULL,(LPSTR)"can'tstartMatlabengine",(LPSTR)"Engwindemo.c",MB_OK);??exit(-1);}T=mxCreateDoubleMatrix(1,10,mxREAL);me

6、mcpy((char*)mxGetPr(T),(char*)time,10*sizeof(double));engPutVariable(ep,"T",T);engEvalString(ep,"D=.5*(-9.8).*T.^2;");engEvalString(ep,"plot(T,D);");engEvalString(ep,"title('Position');");engEvalString(ep,"xlabel('Time(seconds)');");engEvalString(ep,"ylabel('Position(meters)');");a=mxCreate

7、DoubleMatrix(3,2,mxREAL);memcpy((char*)mxGetPr(a),(char*)Areal,6*sizeof(double));engPutVariable(ep,"A",a);engEvalString(ep,"d=eig(A*A');");engOutputBuffer(ep,buffer,30);;engEvalString(ep,"whos");MessageBox((HWND)NULL,(LPSTR)buffer,(LPSTR)"Matlab-whos",MB

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。