首页 理论教育 MATLAB与Java集成云计算实践

MATLAB与Java集成云计算实践

时间:2023-11-20 理论教育 版权反馈
【摘要】:幸运的是MATLAB提供了Java语言支持,用户可以通过其他的途径将MATLAB与Java工具集成使用。MATLAB的Java编程接口主要能完成以下功能:●在MATLAB环境下创建Java对象。MATLAB会自动将java对象转化的浮点数转换为MATLAB浮点数。图9-14 调用MATLAB库Java项目配置详细调用代码如代码清单9-7所示。通过上面的步骤,用户可以将MATLAB与更多的Java并行开发工具进行集成。

MATLAB与Java集成云计算实践

通过前面的讨论,我们使用MATLAB PCT工具与SymphonyDE进行集成,使得MAT- LAB可以借助Symphony DE这样的专业并行计算软件进行并行计算。

而像Hadoop这样的并行计算软件暂时没有像symexec这样的工具可以方便地与MAT- LAB集成。

幸运的是MATLAB提供了Java语言支持,用户可以通过其他的途径将MATLAB与Java工具集成使用。

1.在MATLAB中调用Java程序

从MATLAB5.3起,MATLAB就包含了Java运行环境。事实上在运行MATLAB时,我们有时会碰到Exception in thread"AWT-EventQueue-0"这样的出错信息,这是Java AWT窗体组件出错信息,这说明MATLAB本身窗体也采用Java编写。

可以使用命令查看Java运行环境的信息,如下所示:

978-7-111-36687-4-Chapter09-41.jpg

通过输出结果,可以看出该MATLAB使用Java1.6。

MATLAB的Java编程接口主要能完成以下功能:

●在MATLAB环境下创建Java对象。

●使用Java语法或者MATLAB语法调用Java对象的方法。

●在Java对象和MATLAB之间交互数据。

(1)创建Java对象

用户可以直接将Java对象赋值给MATLAB变量来创建Java对象,通过创建java.lang.System.out对象,就可以在MATLAB中方便地使用java输出对象,如下所示:

978-7-111-36687-4-Chapter09-42.jpg

(2)添加更多的Java类库

上面的例子中可以使用java.lang.System.out类库说明MATLAB Java运行环境中包含Ja-va标准库。用户可以使用javaclasspath命令查看当前所使用的Java类库,还可以通过javaaddpath和javarmpath命来添加和删除Java类库。

(3)类型转换

MATLAB本身支持基本的Java数据类型与MATLAB数据类型的转换,比如将一个字符串转换为浮点数,如下所示。

978-7-111-36687-4-Chapter09-43.jpg

MATLAB会自动将java对象转化的浮点数转换为MATLAB浮点数。

(4)在MATLAB中使用Java语言的好处

有很多用户,特别是科研机构的研究人员、算法分析师等,他们很熟悉MATLAB这样的开发环境,基于MATLAB的集成计算环境更便于他们使用,并且还易于与使用Java开发的并行计算工具集成。

(5)问题

虽然在MATLAB中可以调用Java程序,通过编写Java程序实现计算(比如与Hadoop集成),但是核心算法不能使用MATLAB的函数库。为了解决这个问题,MATLAB提供了一套算法库生成工具,可以在Java中调用MATLAB所写的库函数。

2.在Java中调用MATLAB程序

从MATLAB 2006开始,MATLAB支持将m文件中的算法转换为Java库文件。组件Jav-abuilder安装在C:\Program Files\MATLAB\R2010b\toolbox\javabuilder。(www.xing528.com)

(1)创建部署工程

在MATLAB的command窗口,输入deploytool,或依次单击file→new→deployment pro-ject菜单项会弹出一个新窗口,如图9-11所示。

978-7-111-36687-4-Chapter09-44.jpg

图9-11 创建部署工程

在Target下拉菜单中选择Java Package,将会生成Java库文件。

(2)定义所要生成的类

在本章开始的时候,我们在MATLAB中使用蒙特卡罗算法实现了一个计算圆周率的应用。并将它保存在getpi.m文件中,现在可以使用工具将它封装为Java类。

如图9-12所示,在Deployment Tool窗口中,单击Addclass按钮,添加一个新类Mat-labPI,并单击Add files按钮将getpi.m文件添加给类MatlabPI。这样,MATLAB中的方法getpi将生成为类MatlabPI中的方法。

978-7-111-36687-4-Chapter09-45.jpg

图9-12 设置Java库生成配置

单击build按钮将自动生成Java库文件。

也可以通过命令行生成,如下所示。

978-7-111-36687-4-Chapter09-46.jpg

成功生成库文件后,可以在工程目录的distrib文件夹下找到库文件,同时还有说明文件和类使用文档,如图9-13所示。

978-7-111-36687-4-Chapter09-47.jpg

图9-13 成功生成库文件后的工程目录结构

(3)在Java中调用MATLAB库文件

MATLAB中生成的库文件matlabproj.jar除了包含经常需要的方法外,还调用了很多MATLAB的内部类。

故需要将javabuilder.jar(存放在C:\Program Files\MATLAB\R2010b\toolbox\javabuilder\jar)与matlabproj.jar都加入到Java工程中,如图9-14所示。

978-7-111-36687-4-Chapter09-48.jpg

图9-14 调用MATLAB库Java项目配置

详细调用代码如代码清单9-7所示。

【代码清单9-7】

978-7-111-36687-4-Chapter09-49.jpg

通过上面的步骤,用户可以将MATLAB与更多的Java并行开发工具进行集成。这里只给出方法,具体与哪种并行计算软件集成(比如Hadoop)还是要由读者自行完成。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈