java调用matlab绘图
一 注意事项
1: MatLab的版本必须是2006b+(包括2006b或更高版本),因为只有在这些版本中才有MATLAB Builder for Java(也叫Java Builder)。
2: 运行机器上必须装有JRE 并且版本要和MatLab自带的jre 大版本保持一致(位数也要保持一致)(大版本一致既可,比如同是1.6,或者1.7既可)
查看MatLab 自带JRE版本位数方法:在MatLab中Command Windows中输入 【version -java】 命令查看。如图所示:
这里是 1.6.0_17-b04 版本的JRE 并且为64位的。(注意:这里之所以是64位的,取决于您当初下载的MatLab安装包的位数。
3:验证系统jdk jre,系统首先装有Java环境(不在叙述)。 验证jdk,jre版本位数。打开cmd 输入命令 【java -version】
二 调用基本步骤
1:打开MatLab,HOME -》 新建脚本 打开Editor窗口。脚本内容如下:
%画图 自定义函数drawplot 参数 x y function drawplot(x, y) plot(x, y); %%使用matlab函数plot()作图 grid on %网格显示 xlabel('X轴值') ylabel('Y轴值') title('Java调用MatLab作图例子')
2:在计算机某个目录建个存放MatLab脚本及其后期编译出的java文件。例如:桌面\mjTest。保存脚本到此文件夹下。保存后,
在mjTest文件夹下多了一个drawplot.m文件。
3:在MatLab下Command Window下输入 【deploytool】 命令,打开部署工具Deployment Tool。新建一个工程demo.prj,设置路径为mjTest
既可,类型选择Java Package 点击确定。这时MatLab右侧自动打开了java部署窗口。
4: 选择Liberary Compiler
TYPE: java package
EXPORTED: 选择drawplot.m
修改类名为:Plotter
点击 package
文件夹下面会多出刚才的工程,里面有我们要要用的jar(xxx.jar)
5: 新建工程并导包
在idea下新建工程:javaMatlab
libs文件夹下有两个依赖包:
---xxx.jar
---javabuilder,jar (在matlab安装目录\toolbox\javabuilder\jar\jarbuilder.jar)
6: 新建ConnectMatLabTest.java:
package com.xiami.test; import com.mathworks.toolbox.javabuilder.MWArray; import com.mathworks.toolbox.javabuilder.MWClassID; import com.mathworks.toolbox.javabuilder.MWComplexity; import com.mathworks.toolbox.javabuilder.MWNumericArray; import demo.plotter; public class ConnectMatLabTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub MWNumericArray x = null; // 存放x值的数组 MWNumericArray y = null; // 存放y值的数组 plotter thePlot = null; // plotter类的实例(在MatLab编译时,新建的类) int n = 20; // 作图点数 try { // 分配x、y的值 int[] dims = { 1, n }; x = MWNumericArray.newInstance(dims, MWClassID.DOUBLE, MWComplexity.REAL); y = MWNumericArray.newInstance(dims, MWClassID.DOUBLE, MWComplexity.REAL); // 定义 y = x^2 for (int i = 1; i <= n; i++) { x.set(i, i); y.set(i, i * i); } // 初始化plotter的对象 thePlot = new plotter(); // 作图 thePlot.drawplot(x, y); thePlot.waitForFigures(); } catch (Exception e) { System.out.println("Exception: " + e.toString()); } finally { // 释放本地资源 MWArray.disposeArray(x); MWArray.disposeArray(y); if (thePlot != null) thePlot.dispose(); } } }
运行此类既可看到效果(Run -》 javaapplication),如下图所示: