matlab 声音 mwnumericarray,Java中使用MATLAB作圖

嘗試在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。

bdf7b49c42c2be34db7260b4fb4e3867.jpe

在MATLAB右側會出現我們新建的工程。

將剛剛編寫的m文件直接拖拽進去,並重命名類名為plotter,點擊Build編譯:

1dc42b41f3e6e504ee7e10f33af9a473.jpe

完成之后(過程有點長~)就會在我們選擇的路徑下看到 plotdemo的文件夾。

3)在java工程中調用matlab生成的類

新建工程TryMatlabPlot,並右鍵在Build Path中引用相關的包

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

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

120abc11f17c0cdb670dc507a4968969.jpe

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

}

}

}

運行程序,結果如圖:

0019032146cf7427a410e8a5300457b8.jpe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值