1.
环境准备
a)
机器上有
Eclipse 3.1
和
Matlab 2007a
b)
机器的环境变量设置
i.
JAVA_HOME
(JDK
的安装位置
如
C:\Program Files\Java\jdk1.5.0)
l
设置后,重启
matlab
才能有效。
l
用
getenv JAVA_HOME
,在
Matlab
的命令窗口中试验,看看得到的返回值正确方可说明其对
Matlab
生效了。
ii.
Classpath
l
添加
matlabInstallRoot
\toolbox\javabuilder\jar\javabuilder.jar
iii.
Path
l
添加
%JAVA_HOME%/bin/javac
2.
build matlab m-file into a jar
a)
在
matlab
的
command
窗口,输入
deploytool
。会在右侧弹出一个新窗口(
Deployment Tool
)。
b)
在
Deployment Tool
中,点击
new
按钮,选择
Matlab Builder for Java
与
Java Package
。新建一个工程名字,如
flying.prj
。
c)
In the Deployment Tool pane,
ensure that the Generate Verbose Output option is selected
d)
将欲被
java
调用的
.m
文件,(如
mydraw.m
,其中包括两个参数
(x,y)
),从
Matlab
整个界面的左侧工作目录面板,拖拽到
Deployment Tool
中的新建的类下面的
class
文件夹下。
e)
点击
build
按钮,则会在
matlab
的当前目录下,生成以一个与工程同名的
(
如
flying)
文件夹。如果
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
3.
编写
java
函数,准备调用刚刚生成好的
flying.jar
中的方法。
a)
在
java
工程
Test
属性的
BuildPath
中,添加两个
jar
包:
i.
matlabroot
\toolbox\javabuilder\jar\javabuilder.jar
ii.
TestDirectory
\ flying.jar
b)
编写函数示例如下
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(7,2);
System.out.println("Here");
}catch (Exception e){System.out.println(e);}
}
}
d)
如果不能正常运行,可以考虑在
classpath
中,加入
flying.jar
所在的位置。
4.
详细
a)
参见
matlab
的帮助文件
b)
www.simwe.com/forum/archiver/tid-747229.html
c)
数据类型相关
i.
Java
的数值型数组,可以直接作为输入参数传递到
.m
文件上。
如:
mydraw(x,y)
,可以画
x=[1
2
3
4] ,y=[3.3
-5
6
10.2]
这样的线图。
Java
调用该方法时候,如果传递的参数是整型或者实数型数组,则直接可成功。
如
java
中
:
int[] a=new int[4];
int[] b=new int[4];
//
给
a,b
赋值
…//
…
//
调用
flyingclass flyingDraw=new flyingclass();
flyingDraw.mydraw(a,b);
注意:
a,b
最好所有有索引的位置都有值,否则如果没有充分赋值曲线可能会最终折回
(0,0)
点。
5.
Matlab
程序
(.m
文件
)
的修改
a)
找到
TestDirectory
\ flying.jar
所在的位置(因为按照上述步骤的话,
.m
源文件就在该位置附近)。这个位置,从
Eclipse
的
Package Explore
可以用看到。
b)
直接修改欲改动的
.m
文件
c)
打开
Matlab,
在
Command
输入
Deploytool,
在新打开的部署面板中,“打开”该
m
文件所在的工程,如
flying.prj
。
d)
选中相应工程下
Class
文件夹下的
.m
文件,点击工具栏的
Build
按钮。
e)
则相应源文件被重新编译。如果按照前面步骤添加的
jar
包,则编译后新生成的
jar
包自动替换掉原有的
jar
。又由于这个
jar
的位置,已经作为
BuildPath
告诉了
java
的相应工程,因此
Java
端不需要做任何调整,即可正确调用到新修改了内容的
matlab
方法。
另:所有路径中最好不要包含中文,否则将解析不正确。
分享到:
相关推荐
在Java程序中调用Matlab函数,介绍了在java中怎样调用matlab函数来进行矩阵的分析操作
主要介绍了从java中调用matlab,有需要的朋友可以参考一下
Java调用MATLAB的实例,详细,照本宣科即可
有时为了方便,我们在编写java代码中,如果需要进行大量的计算(如矩阵计算、方程组计算等)时,写... 使用此包就可以进行java调用matlab。使用中会有很多坑,我会写一遍博文来进行说明,并把我遇到的问题全部写出来。
Java程序调用MATLAB接口
java调用matlab程序的一个applet-java调用matlab.txt 最近在做java实现多Agent,如有同志可相互切磋,现附上一段java调用matlab程序的程序,希望能帮到有需要的同仁。
MATLAB的最新版本2006b中新添了一个产品-MATLAB Builder for Java。其实本来Matlab就有Java外部程序接口,不过原来的接口只能在.m文件中调用Java,而无法在Java程序中调用Matlab。
Java中通过Com Builder的方式调用Matlab作图的示例。 具体说明请参考博客http://blog.csdn.net/xiaowei_cqu/article/details/7038819
java调用matlab工作以及调试总结
Java调用Matlab开发详细过程,可移植性强的混合编程哦
java 调用matlab的函数,把matlab的函数封装在java的类里
NULL 博文链接:https://liubin2010.iteye.com/blog/1101613
文章主要讲了怎么在matlab中定义并编译一个函数,以便于在java中调用,达到可扩展编程的目的
实现java调用matlab程序的 基本流程
一种Java调用Matlab的方法简介.pdf
java与matlab混合编程jsp调用matlab网页显示fig
1.正确地配置好环境变量,其中包括eclipse 中所用的jdk环境变量,以及matlab所用的环境变量; 2.未安装Matlab可以通过下载9.2版本的MCR进行安装Matlab的最小化运行环境; 更多内容,请移步博客:...
源码,包含2个matlab的java工程,1个java调用matlab的工程
在没有安装matlab的情况下,用java调用matlab打好的架包,文档详细说明了调用流程,并附有测试工程,安装流程配好环境即可进行测试,测试工程为本人自己写的,有问题欢迎一起研究!
从MATLAB 中调用 Java