Java调用Matlab
2014-06-24 17:01
204 查看
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) 运行程序,结果示例
—————————————————————————————————————————————————————
附录一: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
……
◆ 将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) 运行程序,结果示例
—————————————————————————————————————————————————————
附录一: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
- MATLAB Java builder的使用——在JAVA中调用MATLAB代码
- linux 环境下java调用matlab小结
- c#调用matlab m文件生成的.dll时出现JVM(java虚拟内存)不足
- java调用matlab
- 想用java调用matlab
- Java调用Matlab
- java中调用Matlab的函数+注意事项
- JAVA 调用matlab【转】
- eclipse调试java调用matlab程序的7.17dll找不到的问题
- java调用matlab
- 关于Java调用Matlab程序
- java调用matlab代码方法[matlab version 2010a]
- Java 调用Matlab 问题
- Java调用MATLAB作图是的ERROR--MWEException
- java中调用matlab代码 (matlab java builder)
- java调用matlab代码方法[matlab version 2010a]
- java中调用matlab代码
- java调用matlab实例(以四则运算为例)
- eclipse中java调用matlab函数中的一点点经验