时间: 2015/12/08 作者: 张贵勇 所在学校: 郑州大学 实习公司: 北方大贤风电科技
Linux 环境下实现 Java 调用 Windows 环境
下的 Matlab 函数
一、 所需条件及说明
1. Winows 环境下安装 Matlab(matlab 版本为 2012a 及以上),Eclipse、JDK。
2. Linux 环境下安装 MCRInstaller(适用于 Linux 系统的,且需与 Matlab 版本对应)、JDK
(适用于 Linux 系统的,且与 Windows 下的 JDK 版本对应)。
3. Windows 若为 64 位,则 Matlab、Eclipse、两种 JDK、Linux 系统、MCRInstaller 需均
为 64 位;Windows 若为 32 位,则 Matlab、Eclipse、两种 JDK、Linux 系统、MCRInstaller
需均为 32 位。
4. 本文档中 Windows 和 Linux(ubantu)系统均为 64 位;Matlab 为 2012b 版本(64 位);
JDK 分别为 jdk-7u80-windows-x64.exe 和 jdk-7u80-linux-x64.tar.gz;MCRInstall 为
MCR_R2012b_glnxa64_installer.zip(linux,64 位)。
5. JDK 下载链接:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.htm;
6. MCR 下载链接:http://cn.mathworks.com/products/compiler/mcr/
二、 实现过程
1. Windows 下的 Matlab 函数编写及 jar 包生成
a. Matlab 函数编写
function [ result ] =fun_add( a, b )
result=a+b;
disp('MATLABµ½´ËÒ»ÓÎ');
disp(['result:', num2str(result)]);
end
b. Matlab 生成 jar 包
在 matlab 命令窗口下输入 deploytool,就会弹出一个编译窗口,name 的地方填
写工程名,这里设置为 Addtest;location 填写该工程的存储位置,这里不作修
改;Type 选择 Java Package。如下图所示:
1
时间: 2015/12/08 作者: 张贵勇 所在学校: 郑州大学 实习公司: 北方大贤风电科技
点击 ok,然后先 new 一个 class(点击 Add classes),这个 class 的名字就是你
将来在 java 中需要 new 的 class 的名字,这里设置为 MatlabAdd,然后将你的
m 文件添加到这个 class 目录下(点击 Add files),然后直接 build 即可。如下
图所示:
点击 build,生成后在”D:\资料\公司”路径下生成 Addtest 文件夹,在该文件夹
下的 distrib 文件夹下生成了一个 Addtest.jar。
2. Windows 下的 Java 程序编写及 jar 包生成
a. 在 Eclipse 下新建 java 工程和 java 类
点击 file->new->java project 新建 java 工程
2
时间: 2015/12/08 作者: 张贵勇 所在学校: 郑州大学 实习公司: 北方大贤风电科技
在 project name 处设置工程名称,这里设置为 JavaTest,点击 next
3
时间: 2015/12/08 作者: 张贵勇 所在学校: 郑州大学 实习公司: 北方大贤风电科技
点击 finish 完成 JavaTest 工程的创建,在 Eclipse 界面左边的 Pachage explorer
栏出现一个 JavaTest 工程目录。
4
时间: 2015/12/08 作者: 张贵勇 所在学校: 郑州大学 实习公司: 北方大贤风电科技
右击 JavaTest->new->class,新建 java 类
在 Package 处设置包名称,这里设置为 JavaTest;在 name 处设置类名称,这里
设置为 TestAddtest;选中 public static void main(String[] args),点击 finish 完成
TestAddtest 类的创建。在 JavaTest->src->default package 目录下出现了一个
TestAddtest.java 的 java 类文件。
5
时间: 2015/12/08 作者: 张贵勇 所在学校: 郑州大学 实习公司: 北方大贤风电科技
b. 添加 Matlab 的 javabuilder.jar 以及 Matlab 生成的 Addtest.jar
右击 JavaTest->BuildPath->Add External Archives,给 JavaTest 工程添加外部 jar
包。
6
时间: 2015/12/08 作者: 张贵勇 所在学校: 郑州大学 实习公司: 北方大贤风电科技
将 Matlab 生 成 的 Addtest.jar 以 及 Matlab 安 装 目 录 下
/toolbox/javabuilder/jar/javabuilder.jar 的 javabuilder.jar 添加到 JavaTest 工程。
在 JavaTest 目录下出现 Referenced Libraries 文件夹,在该文件夹下包含了刚才
添加的两个 jar 包。
c. Java 类编写测试程序,测试 Addtest.jar 能否运行
双击 TestAddtest.java,按照如下代码编写 java 类,点击运行,出现
“MATLAB 到此一游
result:12
12”
即为运行成功。
package JavaTest;
import com.mathworks.toolbox.javabuilder.MWException;
import com.mathworks.toolbox.javabuilder.MWNumericArray;
import Addtest.MatlabAdd;;
public class TestAddtest {
public static void main(String[] args) {
try {
MatlabAdd abc=new MatlabAdd();
Object[] result = null; /* Stores the result */
int a=10, b=2;
result=abc.fun_add(1,a,b);
System.out.println(result[0].toString());
System.out.println();
7
时间: 2015/12/08 作者: 张贵勇 所在学校: 郑州大学 实习公司: 北方大贤风电科技
}
catch (MWException e1) {
e1.printStackTrace();
}
finally {
System.gc();
}
}
}
8