Java与Matlab混合编程环境配置与实例分析

       Java调用Matlab的M文件有不同的方法,目前经过探索和实践,实现了其中的一种方法,故将其记录下来,方便使用。
       这里记录的方法是:将Matlab的function程序m文件直接转换生成(build)*.jar包,然后在Java中调用。

一.环境配置

1. JDK版本的选择

       目前经过本人的实践发现,JDK的选择版本由三个因素决定:
     (1)myeclipse的版本。本人使用的myeclipse版本是myeclipse 9,因此myeclipse自带的JDK版本是1.6(或者现在都叫做JDK 6)版本的,如下图:
Java与Matlab混合编程环境配置与实例分析_第1张图片
       (2)由Matlab版本决定。目前在Matlab 2013a版本下如果使用JDK 8的话,是不能将m文件转换生成*.jar包的,在build的时候会出现 “错误:意外的结束标记: * ^”等类似的一大堆错误,具体是什么原因,本人没有深入追究,经过实践,将JDK版本改为 7后就没有这样的问题了,也许是因为Matlab 2013a这个版本与JDK 8之间不兼容导致这样的问题。
       (3)由于myeclipse 9的自带JDK版本是6,因此在编译比1.6版本高的JDK版本编译的*.jar包时会出现不能通过的现象。因此在配置环境变量时,如果配置的是JDK 7的环境变量,那么使用Matlab生成转化*.jar包时将使用JDK 7版本来生成*.jar包,在myeclipse 9中编译是无法通过的。
       因此需要综合以上三点来决定该用哪个版本的JDK。本人使用的是myeclipse 9,该IDE集成的JDK版本默认情况下是使用1.6(如果需要到官网java.sun.com上下载时,其实就是JDK 6),因此,在不改变myeclipse默认的编译环境情况下,应该选择的JDK版本就是JDK 6。
       最终选择的环境版本是:Matlab 2013a + JDK 6 + myeclipse 9 。

2. 环境变量的配置

       (1)JAVA_HOME
       注意,这个变量并不是必须要配置的,该环境变量的作用类似于程序语言中的变量,用来存储某一个值,如果该变量表示的值被大量的引用,一旦这个值需要修改,那么只需要修改该变量的值,就可以实现修改其他地方的值,避免大量的人工修改这个值。这里是用来存储JDK 6的安装路径的,如下图:
Java与Matlab混合编程环境配置与实例分析_第2张图片
而且在没有配置之前,这个变量是不存在的,需要新建,如下图:
Java与Matlab混合编程环境配置与实例分析_第3张图片
       (2)Path
       该变量是系统自带的环境变量,不需要用户自己新建。在该变量中需要添加的值有:”
.;
%JAVA_HOME%\jre\bin;
%JAVA_HOME%\bin;
D:\ProgramFiles (x86)\JDK6_45\bin;”
注意前面的点号不能省略。如下图:
Java与Matlab混合编程环境配置与实例分析_第4张图片
       由这里就可以知道为什么变量JAVA_HOME不是必须要配置的了,使用这个变量其实是为了简洁,一方面,上面的 %JAVA_HOME% 完全可以使用JDK完整的安装目录来代替,但是这样的话Path就会变得很长;另一方面,如果JDK安装目录改变了,那么这个变量就起作用了,这样就不需要在Path中逐一更改一些值了。
       (3)classpath
       这个变量也是由用户自己新建的,它的值为:”
.;
%JAVA_HOME%\lib\tools.jar;
D:\Program Files (x86)\JDK6_45\lib;
D:\Program Files (x86)\MATLAB\R2013a\toolbox\javabuilder\jar\javabuilder.jar;
%JAVA_HOME%\lib\dt.jar;”
注意开始的点号也不能省略。如下图:
Java与Matlab混合编程环境配置与实例分析_第5张图片

3. 环境测试

       打开Matlab,在命令窗口中键入命令:getenv JAVA_HOME,如果得到正确的返回值,则表明配置成功,如下图:
Java与Matlab混合编程环境配置与实例分析_第6张图片
       可以看到,正确的返回了JDK 6的安装位置目录了,表明配置成功。

二.Matlab环境设置

       很多时候,随着学习的深入,编写Matlab的程序也越来越多,就会有较多的m文件,在每次打开Matlab的时候,左边的Current Folder总是显示为如下图所示的目录:
Java与Matlab混合编程环境配置与实例分析_第7张图片
       而且这是Matlab的安装目录,在每次保存M文件的时候,该目录是默认的保存目录了,如果需要将M文件保存在其他位置,则需要手动更改。我们总是希望用一个独立于Matlab安装目录的文件夹来保存所有自己编写的M文件,这样一方面便于保存和查找自己的M文件,另一方面也不会影响到Matlab安装目录,同时在每次打开Matlab的时候,左边的Current Folder就是M文件所在的目录。
       那么该如何实现呢?实现方法如下:
       本人在E盘下建立一个文件夹,名为MATLAB Workspace,表明该目录将用于保存本人今后所有编写的M文件。然后右击Matlab的桌面运行图标,选择“属性”,更改“起始位置”为“E:\MATLAB Workspace”,如下图:
Java与Matlab混合编程环境配置与实例分析_第8张图片
改为:
Java与Matlab混合编程环境配置与实例分析_第9张图片
然后重新打开Matlab,就可以看到当前目录为所设置的目录了,如下图:
Java与Matlab混合编程环境配置与实例分析_第10张图片
       尽管网上也说有其他的方法,但是都未能实现本人想要的效果,也许与本地计算机、系统、软件等方面有关,导致不能实现,但不代表不能实现,这样的情况也许因人而异,不能一概而论。

三.程序演示

1. 编写Matlab的M文件

        编写2个M文件plotsin.m和plotcos.m,内容如下图所示:
Java与Matlab混合编程环境配置与实例分析_第11张图片
Java与Matlab混合编程环境配置与实例分析_第12张图片
       这里要注意一点,这里的函数M文件后面是没有end这一个结束符标记的,在Matlab 2013a 中这个并没有违法。在这里最好不要end,因为如果加上了这个结束符,那么在Java中调用时,就会发生这样的错误,如图:
Java与Matlab混合编程环境配置与实例分析_第13张图片

2. 生成(Build)*.jar包

在Matlab右边的Deployment Project,按下图顺序进行操作:
Java与Matlab混合编程环境配置与实例分析_第14张图片

Java与Matlab混合编程环境配置与实例分析_第15张图片

Java与Matlab混合编程环境配置与实例分析_第16张图片

Java与Matlab混合编程环境配置与实例分析_第17张图片

Java与Matlab混合编程环境配置与实例分析_第18张图片

Java与Matlab混合编程环境配置与实例分析_第19张图片

Java与Matlab混合编程环境配置与实例分析_第20张图片

Java与Matlab混合编程环境配置与实例分析_第21张图片

Java与Matlab混合编程环境配置与实例分析_第22张图片

Java与Matlab混合编程环境配置与实例分析_第23张图片

3. 编写Java程序调用jar包

新建Java Project JavaUseMatlab,新建Java类MathPlotTest,按下图步骤实施:
Java与Matlab混合编程环境配置与实例分析_第24张图片

Java与Matlab混合编程环境配置与实例分析_第25张图片

Java与Matlab混合编程环境配置与实例分析_第26张图片

Java与Matlab混合编程环境配置与实例分析_第27张图片
运行结果如下:
Java与Matlab混合编程环境配置与实例分析_第28张图片

Java与Matlab混合编程环境配置与实例分析_第29张图片

       至此,整个过程就完成了。这仅仅是简单的Java调用Matlab的一个例子,也是一种方法,当然也可能有其他的方法,本人暂时没有进行其他的探索和实践。

你可能感兴趣的:(Java,matlab)