1. 程式人生 > >Java呼叫Matlab方法介紹

Java呼叫Matlab方法介紹

Java呼叫Matlab


結合Java程式設計平臺無關性易擴充套件與Matlab豐富的庫函式工具箱編寫演算法的優勢,在Java程式中呼叫Matlab。

1 Java呼叫Matlab方法舉例
◆  將Matlab編寫的m檔案轉化為COM(Component Object Model)元件,在Java程式中利用第三方工具包呼叫com元件,實現對Matlab程式的呼叫。
1) Jawin(Java/Win32)
jawin是一個免費開源的體系結構,用於 Java 元件和通過 Windows COM 物件或 Windows DLL 來公開的元件之間的互操作。程式碼將能與諸如 MicrosoftOffice 套件等可編寫指令碼的應用程式互動,呼叫諸如 Microsoft 的基於 COM 的 XML 解析器和工具等可編寫指令碼的邏輯元件,以及訪問諸如 Windows 登錄檔、安全 API 和事件日誌等 Win32 API 特性。
最新版本:

jawin-2.0-alpha1.zip
下載地址:http://sourceforge.net/projects/jawinproject/files/
技術資料:http://jawinproject.sourceforge.net/jawin.html
2) Jacob(JAVA-COM Bridge)
JACOB是一個開始於 1999年的開源專案的成果,它提供自動化的訪問com的功能,也是通過JNI功能訪問windows平臺下的com元件或者win32系統庫。
最新版本:jacob-1.15-M3.zip
下載地址:http://sourceforge.net/project/showfiles.php?group_id=109543&package_id=118368

技術資料:http://sourceforge.net/projects/jacob-project/develop
  Matlab(version7.10) function程式m檔案直接轉化為*.jar包,在Java中呼叫。(利用Deployment Project
(下文中重點提及此方法)
◆  其他:JNI(Java Native Interface)等……
這裡採用第二種方法,給出一個Eclipse平臺下Java呼叫Matlab程式的簡單示例。


2   編譯環境
 JDK 1.6 
 
Eclipse 3.4
 MatlabR2010a(7.10) :增加了Deployment Project功能
(原來一直使用的是Matlab7.1版本,比較穩定,不過對於一些新的擴充套件應用以及大容量的RS資料處理就顯得力不存心了;2010年3月釋出的R2010版本做了許多改進,程式比較大,安裝下來4G多,不過功能確實強大不少。對於較大的遙感資料,不會出現7.1及以前版本中out of memory等問題;wavemenu小波GUI工具箱中增加了Wavelet3-D小波功能,感興趣的話可以體驗一下~


3   應用舉例
Step1:Matlab程式設計
1) 編寫測試程式m檔案
Function  plotsin():

Function  plotcos():

2) 建立Deployment Project
File >> New>> Deployment Project
Name:自定義專案名
Target:Java Package,建立jar包

3) 彈出Deployment Tool面板

4) 新增function .m檔案,轉化為Java Class
Add class >> MathPlot(自定義Class名)
Add files >> 新增 前面寫的plotsin.m,plotcos.m檔案(轉化為MathPlot類的方法)

5) Build,組建jar檔案

點選Build按鍵,生成jar檔案

Build Details:附錄一
6) 生成matlabplot目錄結構



Step2:Eclipse平臺Java程式呼叫
7) Eclipse中新建工程,將生成的matlabplot.jar及matlab自帶javabuilder.jar新增到工程中;新建測試程式class:MathPlotTest.java
目錄結構

8) MathPlotTest.java測試程式

9) 執行程式,結果示例