MATLAB Java builder的使用——在JAVA中调用MATLAB代码

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即可。

 

你可能感兴趣的:(MATLAB Java builder的使用——在JAVA中调用MATLAB代码)