環境准備
機器上有Eclipse
和Matlab
a
機器的環境變量設置
(
)JAVA_HOME (JDK的安裝位置
如C:\Program Files\Java\jdk
)
設置後
重啟matlab才能有效
用getenv JAVA_HOME在Matlab的命令窗口中試驗
看看得到的返回值正確方可說明其對Matlab生效了
(
)Classpath
添加matlabInstallRoot \toolbox\javabuilder\jar\javabuilder
jar
(
)Path
添加%JAVA_HOME%/bin/javac
將matlab的m文件生成為jar
在matlab的command窗口輸入deploytool
會在右側彈出一個新窗口(Deployment Tool)
在Deployment Tool中
點擊new按鈕
選擇Matlab Builder for Java與Java Package
新建一個工程名字
如flying
prj
確保在Deployment Tool面板中的Generate Verbose Output被勾上了
將欲被java調用的m文件(如mydraw
m
其中包括兩個參數(x
y))從Matlab整個界面的左側工作目錄面板
拖拽到Deployment Tool中的新建的類下面的class 文件夾下
點擊build按鈕
則會在matlab的當前目錄下
生成以一個與工程同名的文件夾
如果build成功
會看到文件夾結構如下
Flying
|
distrib
| |
flying
jar
| |
flying
ctf
|
|
src
| |
flying
| |
flyingclass
java
| |
flyingMCR
java
| |
classes
| |
flying
| |
flyingclass
class
| |
flyingMCR
class
|
build
log
|
flying
ctf
|
flying
jar
|
mccExcludedFiles
log
|
readme
txt
編寫java方法
准備調用剛剛生成好的flying
jar中的Matlab函數
在java工程屬性的BuildPath中添加兩個jar包
matlabroot\toolbox\javabuilder\jar\javabuilder
jar
TestDirectory\flying
jar
編寫函數示例如下
package test;
/**
* test for a Matlab Call
*
*/
import com
mathworks
toolbox
javabuilder
*;
import flying
*;
public class testMatlabClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto
generated method stub
try {
System
out
println(
Begin
)
flyingclass flyingDraw=new flyingclass()
System
out
println(
Middle
)
flyingDraw
mydraw(
)
System
out
println(
Here
)
}catch (Exception e){System
out
println(e)
}
}
}
如果不能正常運行
可以考慮在 classpath 中
加入 flying
jar 所在的位置
詳 細
參見 matlab 的幫助文件
數據類型相關
Java 的數值型數組
可以直接作為輸入參數傳遞到
m 文件上
如
mydraw(x
y)
可以畫x=[
]
y=[
]這樣的線圖
Java調用該方法時候
如果傳遞的參數是整型或者實數型數組
則直接可成功
如java中
int[] a = new int[
];
int[] b = new int[
];
// 給 a
b 賦值 …
// …
// 調用
flyingclass flyingDraw = new flyingclass()
flyingDraw
mydraw(a
b)
注意
a
b 最好所有有索引的位置都有值
否則如果沒有充分賦值曲線可能會最終折回(
)點
Matlab程序(
m文件)的修改
找到TestDirectory\flying
jar所在的位置(因為按照上述步驟的話
m源文件就在該位置附近)
這個位置
從Eclipse的Package Explore可以用看到
直接修改欲改動的
m文件
打開Matlab
在Command輸入Deploytool
在新打開的部署面板中
打開
該m文件所在的工程
如flying
prj
選中相應工程下Class 文件夾下的
m文件
點擊工具欄的Build按鈕
則相應源文件被重新編譯
如果按照前面步驟添加的jar包
則編譯後新生成的jar包自動替換掉原有的jar
又由於這個jar的位置已經作為BuildPath告訴了java的相應工程
因此Java端不需要做任何調整即可正確調用到新修改了內容的matlab方法
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26534.html