java调⽤matlab_使⽤Java程序调⽤MatLab
Java代码实现的计算难免会显得不够⾼效。⽽利⽤MATLAB写好相应的计算函数,然后打包成jar包供Java调⽤,在某些情况下会更加⽅便。或者有些时候会涉及到使⽤Java调⽤MatLab展现⼀些⼆维三维图。因此⽤到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】
和 【javac -version】分别验证编译和运⾏版本。也许有读者会想,两个命令查看的结果肯定版本都⼀样,但是有些情况java和javac
的版本还真不⼀样,⽐如安装了多个版本的jdk或者不同位数的jdk,如果是以安装的⽅式安装,那么java版本和位数是以最后⼀次安装
保持⼀致,因为安装时,会把拷贝到系统⽬录⼀份(例如:win8中的c:/windows/system32)。虽然配置了java环境变量,但是
如果java环境变量配置在了path变量值得最后⽅,由于系统⽬录配置在了最前⽅,以前⽅为准。因此会出现配置⽆效。照成了以上所说的
情况,这种情况解决⽅法有两种(1:删除系统⽬录下的相关java⽂件,2:把java环境变量配置到Path的最前⾯)。
⽆法正常显⽰。如果读者发⽣这种情况,可以试着⽤这种⽅式解决。
如 果你⽤的是AMD的处理器,不是intel的处理器,安装matlab后,可能不能运⾏,具体表现是,⼀打开就关闭了。解决办法其实也很简单,就是给你的 机器新建⽴⼀个系统变量,变量名是BLAS_VERSION,变量值是D://MATLAB7//bin//win32 //atlas_Athlon.dll(你的matlab安装地址)。
6:如果你要在没有安装matlab的机器上⽤java调⽤这些jar包,怎么办?也是可以的,不过,不过你要先在机器上安装matlab提供的MATLAB Compiler Runtime (MCR) ,它的安装⽂件在D:\program
files\study\MATLAB\R2007b\toolbox\compiler\deploy\win32下(你的安装⽬录下)⽂件名。
⼆:调⽤基本步骤
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:在Build选项卡下点击 Add classes 添加⼀个名称为plotter的Class(java类,在后边java代码中会调
⽤到)。
5:在plotter底下点击Add files,添加刚才mjTest下的drawplot.m⽂件。点击上图右上⽅位置的编译按钮(两个向下箭头的那个按钮)。
编译时间稍微有些长,耐⼼等待即可。
6:编译完成后,我们会在mjTest⽬录下看到了demo⽂件夹⽣成了。进⼊demo/distrib⽬录。如发现demo.jar。则可以进⾏下⼀步操作了。
7:打开Myeclipse或者eclipse等IDE⼯具
新建JavaProject mjTest(项⽬名称随意),并且引⽤以下两个jar包
E:\Program Files\MATLAB\R2013a\toolbox\javabuilder\jar\javabuilder.jar(MatLab安装⽬录下)如果是64位,选择E:\Program Files\MATLAB\R2013a\toolbox\javabuilder\jar\win64\javabuilder.jar
以及刚刚⽣成的demo\distrib\demo.jar
新建ConnectMatLabTest.java:
package st;
import lbox.javabuilder.MWArray;
import lbox.javabuilder.MWClassID;
import lbox.javabuilder.MWComplexity;
import lbox.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 = wInstance(dims, MWClassID.DOUBLE, MWComplexity.REAL);
y = wInstance(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());
jdk怎么使用
}
finally {
// 释放本地资源
MWArray.disposeArray(x);
MWArray.disposeArray(y);
if (thePlot != null)
thePlot.dispose();
}
}
}
运⾏此类既可看到效果(Run -》 javaapplication),如下图所⽰:
三:调⽤matlab函数并返回计算结果
如下:
考虑到计算的各种情况,有些⽤Java代码实现的计算难免会显得不够⾼效。⽽利⽤MATLAB写好相应的计算函数,然后打包成jar包供Java 调⽤,在某些情况下会更加⽅便。现在就来说⼀下如何实现这⼀过程:
1.确定配置好了相应的环境
⾸先,要确定你电脑上装好了MATLAB并且配置好了Java的运⾏环境,注意,MATLAB的版本必须是2006b+(包括2006b或更⾼版本),因为只有在这些版本中才有MATLAB Builder for Java(也叫Java Builder)。
2.打包步骤
a)打开MATLAB(笔者⽤的是MATLAB 2012b,版本的⼀些差异我会在后⾯注明),在Command Window框中输⼊deploytool,会跳出如下界⾯:
可能在有些版本中选择Type时显⽰的是Matlab Builder for Java,并且在Deployment Tool⾯板中还有Generate Verbose Output选项框,勾选上它,针对不同的版本时可能有⼀些出⼊,⼤家多留⼼⼀些,⾃⼰多尝试尝试。
c)在MATALAB的Editor中新建⼀个m⽂件,这⾥编辑⼀个简单的加法函数add并保存:
d)在MATLAB中到Java Package窗⼝,添加class⽂件,命名这个class⽂件的时候要注意了,因为这个⽂件就是以后导⼊到Java中要作为⼀个对象的名字,也就是说它就是放在new后⾯作为构造函数的类名。这⾥命名为matlabAdd:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论