您的位置:首页 > 编程语言 > MATLAB

Java中使用MATLAB作图

2012-08-10 14:47 246 查看
尝试在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文件:

[plain] view plaincopyprint?

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。



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

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



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

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

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

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

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



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

运行程序,结果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: