1.MATLAB中新建script,输入如下内容
%画图 自定义函数drawplot 参数 x y
function drawplot(x, y)
plot(x, y); %%使用matlab函数plot()作图
grid on %网格显示
xlabel('X轴值')
ylabel('Y轴值')
title('Java调用MatLab作图例子')
保存,本例保存目录为E:\Workspaces\matlab\test
2.在MATLAB的Command Window输入deploytool命令(MATLAB版本:R2016a)
选择Library Compiler,在弹出的窗口选择Java Package,输入Library name,Class name输入plotter(java类,在后边java代码中会用)。点击加号按钮,添加刚才的drawplot.m文件
完成之后,点击右上角的package
3.打开MyEclipse,新建project命名为mjTest,引用两个jar包:D:\Program Files (x86)\MATLAB\R2016a\toolbox\javabuilder\jar下面的javabuilder.jar和上一步生成的demo.jar
新建ConnectMatlabTest.java
package mjTest;
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 As--Java Application