MATLAB从2006b的版本之后带有MATLAB Builder for Java(又叫Java Builder),是对MATLAB Compiler的扩展。用Java Builder可以将MATLAB函数包装到一个或多个Java类中形成一个Java组件或包。每个MATLAB函数被封装为Java类的一个方法,可以在Java应用程序中被调用。
在MATLAB安装目录/toolbox下如果看到javabuilder文件夹,则说明已经安装MATLAB Builder for Java。
配置步骤:
软件:Eclipse 3.5
Matlab 2009a
环境变量设置 :
JAVA_HOME (JDK的安装位置,如C:/Program Files/Java/jdk1.5.0) 设置后,重启matlab才能有效。用getenv JAVA_HOME在Matlab的命令窗口中试验,看看得到的返回值正确方可说明其对Matlab生效了。
Path添加%JAVA_HOME%/bin/javac
使用方法:
一,将MATLAB的.m文件生成jar包
1 在matlab的command窗口输入deploytool,会在右侧弹出一个新窗口(Deployment Tool)。
2 在Deployment Tool中,点击new按钮,选择Matlab Builder for Java与Java Package。新建一个工程名字,如myadd.prj 。
3 确保在Deployment Tool面板中的Generate Verbose Output被勾上了。
4 在MATLAB的Editor中编写myadd.m文件,示例代码如下:
function y = myadd(a, b) y = a+b; end
将myadd.m文件加入到Deployment Tool中的新建的类下面的class 文件夹下。
5 点击build按钮,则会在matlab的当前目录下,生成以一个与工程同名的文件夹。找到distrib文件夹,将myadd.jar包拷贝到JAVA工程目录下。
二、在Eclipse中新建JAVA项目
1 将myadd.jar包加入项目的build path;
2 matlabInstallRoot /toolbox/javabuilder/jar/javabuilder.jar 加入项目的build path;
3 新建JAVA类文件MJBuilderTest.java,示例代码如下:
/* Necessary package imports */ import com.mathworks.toolbox.javabuilder.*; import myadd.*; /* * MJBuilderTest class test the myadd class created by Java Builder. The * inputs are passed on the command line. */ class MJBuilderTest { public static void main(String[] args) { MWNumericArray a = null; /* Stores input values a */ MWNumericArray b = null; /* Stores input values b */ Object[] result = null; /* Stores the result */ Myadd myAdd = null; /* Stores myadd class instance */ try { /* 检测输入变量 */ if (args.length != 2) { System.out.println("Error: must input 2 numbers!"); return; } /* 接收输入变量 */ a = new MWNumericArray(Double.valueOf(args[0]),MWClassID.DOUBLE); b = new MWNumericArray(Double.valueOf(args[1]),MWClassID.DOUBLE); /* 创建myadd对象 */ myAdd = new Myadd(); /* 计算并输出结果 */ result = myAdd.myadd(1, a, b); System.out.print("/nThe sum of " + a.toString() + " and " + b.toString() + " is: "); System.out.println(result[0]); } catch (Exception e) { System.out.println("Exception: " + e.toString()); } finally { /* Free native resources */ MWArray.disposeArray(a); MWArray.disposeArray(b); MWArray.disposeArray(result); if (myAdd != null) myAdd.dispose(); } } }
4 在Eclipse中设置好输入参数输入窗口:Run as- Run configations-Arguments 选择 要输入的数据类型,这里选择的是“string_prompt”,点击应用。
5 编译执行MJBuilderTest.java,输入参数(2个参数用空格隔开),例如:1 2 ,如果配置正确,结果会显示
“The sum of 1 and 2 is: 3”
可能出现的问题:
我使用的MATLAB版本是2009a在编译MJBuilderTest.java报错:
Failed to find the library mclmcrrt710.dll,required by MATLAB Builder JA, on java.library.path
原因是2009a要对应安装mclmcrrt7.10。 在MATLAB安装目录下查找:/toolbox/compiler/deploy/win32,找到MCRInstaller.exe 安装,重启Eclipse即可。