




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第Java如何調(diào)用Matlab程序目錄Java如何調(diào)用Matlab程序1.檢查Matlab內(nèi)置的Java版本和系統(tǒng)安裝的Java版本是否一致?2.準(zhǔn)備一份要調(diào)用的Matlab代碼3.將Matlab代碼打包成Jar包4.新建Java項(xiàng)目,調(diào)用由Matlab得到的Jar包Java調(diào)用Matlab函數(shù)筆記1.在命令行中輸入deploytool2.點(diǎn)擊上圖中標(biāo)有紅框的部分3.選擇javapackage,依次填寫name,classname4.編寫java類,進(jìn)行測試5.調(diào)用有返回結(jié)果的函數(shù)
Java如何調(diào)用Matlab程序
背景
Matlab可以輕易處理非常復(fù)雜的數(shù)學(xué)計(jì)算,Java具有多變的應(yīng)用場景,如Web開發(fā)。本文講述如何將兩者優(yōu)勢結(jié)合起來,基本思路是將Matlab核心程序打包成Jar,供普通的Java程序調(diào)用。
具體步驟
1.檢查Matlab內(nèi)置的Java版本和系統(tǒng)安裝的Java版本是否一致?
檢查MATLAB內(nèi)置的Java版本
檢查系統(tǒng)的Java版本
2.準(zhǔn)備一份要調(diào)用的Matlab代碼
為了測試各種數(shù)據(jù)類型(如Matlab的矩陣數(shù)據(jù)類型)的使用,本文采用稍稍復(fù)雜的Matlab測試程序:基于測距的網(wǎng)絡(luò)定位。其包含多個(gè)M文件,其中主函數(shù)代碼如下。輸入?yún)?shù)7個(gè):gCov是矩陣,其他為標(biāo)量。輸出參數(shù)2個(gè),都是矩陣。
function[nodeLoc,pMds]=main_localization(N,dim,space,nGps,gCov,sigma,numMiss)
nodeLoc=diag(ones(dim,1)*space)*(rand(dim,N)-0.5);
dltSec=zeros(N,1);
achrIdx=1:nGps;
covMats=zeros(dim,dim,nGps);
forn=1:nGps
covMats(:,:,n)=gCov;
[CT,CR]=round_robin(nodeLoc,dltSec,sigma);
[A,~,y]=gen_Ay(CT,CR,ones(N));
connMat=gen_connMat(N,numMiss);
dltEst=est_dlt_ls(A,y,connMat);
distVec=y-A*dltEst;
distMat=diag_vec2mat(distVec);
edm=distMat.^2;
pGps=mvnrnd(nodeLoc(:,achrIdx)',gCov)';
pMds=classic_mds(edm,dim);
pMds=orthogonal_procrustes(pMds,pGps,achrIdx);
其他多個(gè)M文件列表如下圖所示:
3.將Matlab代碼打包成Jar包
(1)在Matlab命令行窗口輸入deploytool指令,喚起打包部署工具
(2)配置打包類型、包名、類名;選擇待打包的M的文件
(3)等待打包完成,應(yīng)有3個(gè)對勾
(4)打包生成的工程目錄結(jié)構(gòu)如下
4.新建Java項(xiàng)目,調(diào)用由Matlab得到的Jar包
(1)Eclipse新建Java項(xiàng)目(不贅述)
(2)添加兩個(gè)Jar包到Java項(xiàng)目中
Matlab安裝目錄下的Jar包:...\MATLAB\R2017a\toolbox\javabuilder\jar\javabuilder.jar前面M文件生成的Jar包:...\localization_matlab\for_redistribution_files_only\localization_matlab.jar
(3)寫Java程序調(diào)用Matlab生成的Jar包,源碼如下:
packagecom.csrl.localization;
importcom.mathworks.toolbox.javabuilder.MWClassID;
importcom.mathworks.toolbox.javabuilder.MWException;
importcom.mathworks.toolbox.javabuilder.MWNumericArray;
importlocalization_matlab.MdsLocalization;
publicclassTestLocalization{
publicstaticvoidmain(String[]args){
try{
MdsLocalizationmatrixCompletion=newMdsLocalization();
doubleN=10;
doubledim=2;
doublespace=500;
doublesigma=2;
doublenGps=5;
doublenumMiss=0;
double[][]gCovArr={{1,0},{0,1}};
MWNumericArraygCov=newMWNumericArray(gCovArr,MWClassID.DOUBLE);//將二維數(shù)組轉(zhuǎn)化為矩陣
//第一個(gè)參數(shù)“2”代表原Matlab函數(shù)輸出參數(shù)的個(gè)數(shù),后面的都是原Mat了吧函數(shù)輸入?yún)?shù);輸出參數(shù)用Object數(shù)組保存
Object[]result=matrixCompletion.main_localization(2,N,dim,space,nGps,gCov,sigma,numMiss);
MWNumericArraydata=(MWNumericArray)result[0];//第一個(gè)輸出參數(shù)
double[][]nodeLoc=(double[][])data.toDoubleArray();//將矩陣轉(zhuǎn)化為二維數(shù)組
data=(MWNumericArray)result[1];//第二個(gè)輸出參數(shù)
double[][]pMds=(double[][])data.toDoubleArray();//將矩陣轉(zhuǎn)化為二維數(shù)組
System.out.println(result[0]);//同Matlab輸出格式,輸出矩陣
System.out.println(result[1]);
System.out.println(nodeLoc[0][0]);//通過二維數(shù)組索引輸出矩陣中某個(gè)元素
System.out.println(pMds[0][0]);
}catch(MWExceptione){
e.printStackTrace();
Java調(diào)用Matlab函數(shù)筆記
筆記是記錄通過java如何調(diào)用matlab函數(shù):
1.在命令行中輸入deploytool
2.點(diǎn)擊上圖中標(biāo)有紅框的部分
3.選擇javapackage,依次填寫name,classname
在package的過程中可能會出現(xiàn)mcc錯(cuò)誤的情況
4.編寫java類,進(jìn)行測試
importcom.mathworks.toolbox.javabuilder.MWException;
importcomputef.ComputeF;
publicclassmatlab2javaTest{
publicstaticvoidmain(Stringargs[])throwsMWException{
System.out.println(System.getProperty("java.library.path"));
ComputeFcl=newComputeF();
putef(0);
}
第一次運(yùn)行時(shí),會報(bào)如下錯(cuò)誤
Exceptioninthread“main”java.lang.UnsatisfiedLinkError:Failedtofindthelibrarymclmcrrt7_14.dll,requiredbyMATLABBuilderJA,onjava.library.path.
ThislibraryistypicallyinstalledalongwithMATLABortheMCR,itsabsencemayindicateanissuewiththatinstallationorthecurrentpathconfiguration.
TheMCRversionthatthiscomponentistryingtouseis:7.14.
錯(cuò)誤原因可能是:path中沒有matlab的路徑,即找不到mclmcrrt7_14.dl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人類健康與長壽秘密課件
- T/CAEPI 49-2022污水處理廠低碳運(yùn)行評價(jià)技術(shù)規(guī)范
- 人的健康課件
- 競選大隊(duì)委員演講稿
- 企業(yè)村鎮(zhèn)應(yīng)急互助協(xié)議書
- 工廠員工水杯定制協(xié)議書
- 醫(yī)療廢物收集轉(zhuǎn)運(yùn)協(xié)議書
- 區(qū)塊鏈創(chuàng)業(yè)合伙人協(xié)議書
- 勞務(wù)用工合同終止協(xié)議書
- 餐飲店聯(lián)營合作協(xié)議書
- 駐村第一書記工作總結(jié)模版
- 2025物理大一輪復(fù)習(xí)講義復(fù)習(xí)講義答案精析
- 2025年高考政治搶押秘籍(江蘇專用)時(shí)政熱點(diǎn)04哪吒2(學(xué)生版+解析)
- 第23課《“蛟龍”探海》課件統(tǒng)編版語文七年級下冊
- 人教版英語八下Unit8 Have you read Treasure Island yet Section A 3a-3c課件
- 工程師施工現(xiàn)場安全管理實(shí)務(wù)試題及答案
- 初中地理澳大利亞(第2課時(shí))課件+-2024-2025學(xué)年地理人教版(2024)七年級下冊
- 2025年安全生產(chǎn)月主題宣貫課件
- 生物質(zhì)轉(zhuǎn)化技術(shù)原理考核試卷
- 調(diào)味品中微生物安全-全面剖析
- 審計(jì)報(bào)告模板
評論
0/150
提交評論