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()
Java调用Matlab_第1张图片
Function  plotcos()

2)  建立 Deployment Project
File >> New>> Deployment Project
Name :自定义项目名
Target Java Package ,建立 jar
Java调用Matlab_第2张图片
3)  弹出 Deployment Tool 面板
Java调用Matlab_第3张图片
4)  添加 function .m 文件,转化为 Java Class
Add class >> MathPlot ( 自定义 Class )
Add files >>  添加 前面写的 plotsin.m plotcos.m 文件 (转化为 MathPlot 类的方法)
Java调用Matlab_第4张图片
5)  Build ,组建 jar 文件
Java调用Matlab_第5张图片
点击 Build 按键,生成 jar 文件

Build Details :附录一
6)  生成 matlabplot 目录结构



Step2:Eclipse平台Java程序调用
7)  Eclipse 中新建工程,将生成的 matlabplot.jar matlab 自带 javabuilder.jar 添加到工程中;新建测试程序 class MathPlotTest.java
目录结构
Java调用Matlab_第6张图片
8)  MathPlotTest.java 测试程序

9)  运行程序,结果示例
Java调用Matlab_第7张图片





—————————————————————————————————————————————————————
附录一: BuildDetails
ant:
<ant>
  <mkdir dir="D:\Matlab\Matlab7.1\work\JavaPrj\matlabplot\distrib" />
  <mkdir dir="D:\Matlab\Matlab7.1\work\JavaPrj\matlabplot\src" />
</ant>
mcc -Wjava:matlabplot,MathPlot -T link:lib -d 'D:\Matlab\Matlab7.1\work\JavaPrj\matlabplot\src' -w enable:specified_file_mismatch -wenable:repeated_file -w enable:switch_ignored -w enable:missing_lib_sentinel -wenable:demo_license -v 'class{MathPlot:D:\Matlab\Matlab7.1\work\JavaPrj\plotcos.m,D:\Matlab\Matlab 7.1\work\JavaPrj\plotsin.m}' 
Compiler version:4.13 (R2010a) 
Processing includefiles...
2 item(s) added.
Processingdirectories installed with MCR...
The fileD:\Matlab\Matlab 7.1\work\JavaPrj\matlabplot\src\mccExcludedFiles.log containsa list of functions excluded from the CTF archive.
2 item(s) added.
Generating MATLABpath for the compiled application...
Created 39 pathitems.
Begin validation ofMEX files: Sat Oct 09 23:57:10 2010 
End validation ofMEX files: Sat Oct 09 23:57:10 2010
……

你可能感兴趣的:(Java调用Matlab)