如何在Java中调用Matlab?
1.确定配置好了相应的环境
首先,要确定你电脑上装好了MATLAB并且配置好了Java的运行环境,注意,MATLAB的版本必须是2006b+(包括2006b或更高版本),因为只有在这些版本中才有MATLAB Builder for Java(也叫Java Builder)。
2.打包步骤
a)打开MATLAB(笔者用的是MATLAB 2012b,版本的一些差异我会在后面注明),在Command Window框中输入deploytool,会跳出如下界面:
b)在Name中输入名字,在Location中选择路径,最后在Type中选择Java Package:
可能在有些版本中选择Type时显示的是Matlab Builder for Java,并且在Deployment Tool面板中还有Generate Verbose Output选项框,勾选上它,针对不同的版本时可能有一些出入,大家多留心一些,自己多尝试尝试。
c)在MATALAB的Editor中新建一个m文件,这里编辑一个简单的加法函数add并保存:
d)在MATLAB中找到Java Package窗口,添加class文件,命名这个class文件的时候要注意了,因为这个文件就是以后导入到Java中要作为一个对象的名字,也就是说它就是放在new后面作为构造函数的类名。这里命名为matlabAdd:
e)然后点类名下的Add files,将刚才编辑好的m文件add.m加到matlabAdd当中。
f)接着就可以打包了,还是在Java Package窗口找到,点击就可以打包了。等打包好,就可以调用了。
3.调用打包好的matlab函数
a)在MATLAB安装的目录中找到"...oolbox\javabuilder\jar\javabuilder.jar"的文件,并在你刚才打包的文件夹中找到对应的包,本例中是firstOne.jar,然后将这两个jar包导入到你的Java项目当中。
http://www.cnblogs.com/xkxf/p/6918399.html
一、matlab版本必须支持java在command 模式下面运行deploytool,如果支持该命令即可使用
二、matlab中function的书写
%定义一个函数operation(a,b),求a与b的加减乘除运算,并返回结果
%函数定义function 输出变量列表[s,m,...] 函数名(输入变量列表)sum,sub,mul,div中
function [sum,sub,mul,div] = operation(a,b);
sum = a + b;
sub = a - b;
mul = a * b;
div = a / b;
end
PS:上面function后中括号部分与java中调用该operation的返回值有关系,在java中调用的 Object result[] = XXX.operation(4,a,b); 4表示有4个返回值,分别存放在result[0]到result[4]中。
三、使用matlab编译生成jar
在matlab命令窗口下输入 deploytool,就会弹出一个编译窗口,
然后点击,file,选择new-deployment project,
然后选择matlab builder jave。
name的地方填写工程名,
ocation填写该工程的存储位置。
点击ok。
然后,把m文件添加到工程中,先new一个class,这个class的名字就是你将来在java中需要new的class的名字,也就是matlab中operation所在的class名字然后将你的m文件添加到这个class目录下,然后直接build即可。
四、在java中使用matlab的函数
现在eclipse下面new一个新的java工程,然后将第三部build成功后产生的文件夹下面的distrib目录中的XXX.jar 以及你matlab安装目录下/toolbox/javabuilder/jar/javabuilder.jar加入你的java工程extend lib 中去。
然后你可以清晰的看到XXX.jar中包含的函数和类
五、可能碰到的问题
Exception in thread "main" java.lang.UnsatisfiedLinkError: Failed to find the library libmwmclmcrrt.so.7.13, required by MATLAB Builder JA, on java.library.path.
This library is typically installed along with MATLAB or the MCR, its absence may indicate an issue with that installation or the current path configuration.
The MCR version that this component is trying to use is: 7.13.
Failed to find the library mclmcrrt710.dll,required by MATLAB Builder JA, on java.library.path
原因是2009a要对应安装mclmcrrt7.10。在MATLAB安装目录下查找:\toolbox\compiler\deploy\win32,找到MCRInstaller.exe 安装,重启Eclipse即可。
资料来源:http://blog.csdn.net/com_stu_zhang/article/details/7605391
什么是JAVA?它有哪些作用和功能?
Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。 3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。
在JAVA中何时用get和set方法
String str;public void set(String string){ this.str = string;} public String get(){ return this.str;} } 这就是set和get的最基本用法,例如一个标准的java bean就是所有变量和这些变量的set和get方法组成的。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解...
java中方法外如果何访问局部变量
你是想获取到方法中的变量值吗?这种一般在类下定义个同类型成员变量,之后如果外部需要获取值就把局部变量赋值给成员变量,之后外面就是操作外部变量,可是必须强调是,外部成员变量不管怎么操作,是不会影响到方法内的局部变量的,因为局部的变量在方法执行完毕后就没用了,下次再进入方法中,除非你把成员...
java中finalize()方法的使用
a = null ;这之后, a和b的状态会在某一个时刻变成unreachable, unfinalized或者a和b直接变成f-reachable, unfianlized。然后在某个时刻,GC检测到a和b处于unfinalized状态,就将他们添加到F-queue,并将状态改为f-reachable finalizable。之后分两种情况:1、 GC从F-queue中首先取出a, 并被某个线程...
Java中的finalize详解
看来之所以要有finalize( ) 是由于你可能在分配内存时 采用了类似C语言中的做法而非Java中的通常做法 这种情况主要发生在使用 本地方法 的情况下 它是在Java中调用非Java代码的一种方式 本地方法目前只支持C和C++ 但它们可以调用其它语言写的代码 所以你实际上可以调用任何代码 在非Java代码中 也许会...
java基础都有那些?
返回值:方法在执行完毕后返回给调用他的环境的数据 返回值类型:实现约定的返回值的数据类型,如无返回值,必需给出返回值类型void java语言中调用方法:对象名.方法名(实参列表) 实参的数目、数据类型和次序必需和所调用方法声明的形参列表匹配 return语句终止方法的运行并指定要返回的数据 java中进行函数调用传递参数时...
JAVA连接SQL数据库
\/\/conn.insert("insert into BookInfo (BookID,BookName,Author,KeyWord) values (14445678,'悟空传','今何在','孙悟空')");try{ while(rs.next()){ \/\/循环,判断结果集里的记录,一条条往下走,是否还有下一条记录,若是返回真,继续走 System.out.print(rs.getString("OrderID"));\/\/System...
请教大家关于JAVA中的静态变量和静态方法
java类的成员变量有俩种 一种是被static关键字修饰的变量,叫类变量或者静态变量 另一种没有static修饰,为实例变量 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命...
java中参数传递是形参传递给实参的吗?和方法调用有什么联系?谢谢各位...
3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。5.当参数为基础数据类型时:实参传递给形参的是值(包括String类型)形参在函数内值的变化不会影响实参 6...
JAVA是什么意思?
(8)多线程:Java处理多线程的过程很简单,Java把多线程实现交给底下操作系统或线程程序完成.所以多线程是Java作为服务器端开发语言的流行原因之一。 (9)Applet和servlet:能够在网页上执行的程序叫Applet,需要支持Java的浏览器很多,而applet支持动态的网页,这是很多其他语言所不能做到的。 基本概念: 1.OOP中唯一关系...
路俭美克: 在Java中调用Matlab的方法时,有三种方式.大致都有2个参数,第一个参数是定义输出结果,第二个参数为输入参数.方式一:functionName(int arg0, Object... agr1): Object[] 方式二:functionName(List arg0, List agr1): void 方式三:functionName(Object[] arg0, Object[] agr1): void
长岛县15875817418: 如何在Java中调用Matlab? - ?
路俭美克: 一、matlab版本必须支持java 在command 模式下面运行deploytool,如果支持该命令即可使用 二、matlab中function的书写%定义一个函数operation(a,b),求a与b的加减乘除运算,并返回结果%函数定义function 输出变量列表[s,m,...] 函数名(...
长岛县15875817418: 如何在java中调用matlab代码 - ?
路俭美克: 前段时间摸索了java调用matlab东西,不说学的有多深,也算有结果了,达到目的了.也即用java程序可以调用matlab中函数了. 按顺序说吧,最开始肯定是下个matlab看看.下哪一个呢.开始下一个7.0觉得很新了.后来才觉得不是,现在都有...
长岛县15875817418: java 如何利用matlab工具箱 - ?
路俭美克: Java可以调用Matlab,先把Matlab编写的m文件编译成组件,是通过Matlab Builder JA这个组件打包成一个Java类,供你在Java程序里调用.这些在Matlab自带的Help里面说得很清楚的,不是很困难.关键需要注意数据类型的转换和参数传递,不会的可以hi我
长岛县15875817418: java中怎么调用matlab绘制三维图形 - ?
路俭美克: 1、调用plot3函数来绘制三维曲线图,调用格式如下:plot3(x1,y1,z1,'PropertyName','PropertyValue'...); 其中PropertyName表示属性名,可以是颜色,线型,线宽等属性,PropertyValue表示属性值,对应属性名所包含的各种属性值....
长岛县15875817418: 如何实现Java和matlab的混合编程,用java做交互界面,调用matlab做计算?有实例请发给我参考下,十分谢谢 - ?
路俭美克: 部署好了就行了.环境部署网上都有.直接搜索Java与matlab混编就行.我也在做混编,部署完了,使用matlab中的deploytool将.m文件编译为class文件,就可以在Java中当成类的一个方法调用.实例发给你,你也参考不了什么.
长岛县15875817418: 如何在matlab中使用java - Java - ?
路俭美克: 1、需要将相关jar包地址添加到matlab的classpath.txt文件中2、在matlab中创建一个JFrame窗口对象:下面都是在matlab命令行的操作,%表示相关命令的解释>> import javax.swing.JFrame; %引入相关类>> import %import命令用来查询已经引...
长岛县15875817418: Java怎么调用含有多个输入参数的matlab函数呢 - ?
路俭美克: function用来定义函数,一般一个函数放在一个.m文件里.举个简单的例子建立一个myfunction.m,然后在文件中写. function y=myfunction(a,b) 其中a,b是输入函数的参数,y是函数返回的值.当需要返回多个值时,可以将y看作一个数组,或者...
长岛县15875817418: java调用matlab的M函数 - ?
路俭美克: matlab是什么??? ,一个类??打比方来说: 你有一个matlab类;而M是matlab的一个函数;也就是一个方法;像这样://类 public class matlab{//M方法 public void M() { //你的业务处理.. } //不知道你有没有入口函数..也就是main函数,要...
长岛县15875817418: java调用matlab javabuilder.jar 帮助文档? - ?
路俭美克: matlab开发环境中自带了一个帮助文档,虽然是英文的,但是很详细 你可以直接打开matlab环境,直接按F1