matlab java 保存生成图片_Java中使用MATLAB作图

本文介绍了如何在Java中利用MATLAB进行图形绘制。首先,确保Eclipse和MATLAB环境配置正确,然后通过MATLAB的部署工具将m文件打包成Java类。接着,在Java工程中引用生成的jar包并编写代码调用MATLAB的绘图函数,实现图形的显示。最后展示了简单的代码示例和运行结果。
摘要由CSDN通过智能技术生成

尝试在Java中调用MATLAB!

1)实验环境

机器中装有Eclipse和Matlab,并配置好环境变量。

小魏装的是Eclipse 3.7.1 和Matlab7.11.0 (R2010b)。当然要装有JDK,Eclipse的配置不多说了,网上有许多,至于Matlab,最好在classpath中添加:

%matlabInstallRoot%\R2010b\toolbox\javabuilder\jar\javabuilder.jar

这里说“最好”,是因为不添加,只在项目中引用,貌似也是可行的。

P.S. 如果是VC++中调用MATLAB,一定要在path中添加:

%matlabInstallRoot%\R2010b\bin\win32

2)将Matlab的m文件包装成java类

这里我们使用Matlab自带的例子,在路径

%matlabInstallRoot%\R2010b\toolbox\javabuilder\Examples\PlotExample

下,此处是m文件:

function drawplot(x, y)

plot(x, y); %%使用matlab函数plot()作图

function drawplot(x, y)

plot(x, y); %%使用matlab函数plot()作图

在MATLAB中Command窗口中输入deploytool调出部署工具DeploymentTool。新建一个工程,输入工程名plotdemo.prj,选择路径,并选择Target为 Java Package。

0_13229630744d8D.gif

在MATLAB右侧会出现我们新建的工程。

将刚刚编写的m文件直接拖拽进去,并重命名类名为plotter,点击Build编译:

0_1322963091aSwJ.gif

完成之后(过程有点长~)就会在我们选择的路径下看到 plotdemo的文件夹。

3)在java工程中调用matlab生成的类

新建工程TryMatlabPlot,并右键在Build Path中引用相关的包

%matlabInstallRoot%\R2010b\toolbox\javabuilder\jar\jarbuilder.jar

以及刚刚生成的plotdemo\distrib\plotdemo.jar

0_1322963107ssd0.gif

Java类文件的代码为:

package lwei.test.matlab;

import com.mathworks.toolbox.javabuilder.*;

import plotdemo.*;

/***

* 通过调用matlab中的函数在窗口中作图

* @Author: lwei

*/

class createplot

{

public static void main(String[] args)

{

MWNumericArray x = null;   //存放x值的数组

MWNumericArray y = null;    //存放y值的数组

plotter thePlot = null;    //plotter类的实例

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();

}

}

}

package lwei.test.matlab;

import com.mathworks.toolbox.javabuilder.*;

import plotdemo.*;

/***

* 通过调用matlab中的函数在窗口中作图

* @Author: lwei

*/

class createplot

{

public static void main(String[] args)

{

MWNumericArray x = null; //存放x值的数组

MWNumericArray y = null; //存放y值的数组

plotter thePlot = null; //plotter类的实例

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();

}

}

}

运行程序,结果如图:

0_1322963124993k.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值