Java调用MATLAB函数
2014-04-19 15:49
489 查看
考虑到计算的各种情况,有些用Java代码实现的计算难免会显得不够高效。而利用MATLAB写好相应的计算函数,然后打包成jar包供Java调用,在某些情况下会更加方便。现在就来说一下如何实现这一过程:
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安装的目录中找到"...\toolbox\javabuilder\jar\javabuilder.jar"的文件,并在你刚才打包的文件夹中找到对应的包,本例中是firstOne.jar,然后将这两个jar包导入到你的Java项目当中。
b)新建JAVA类文件MJBuilderTest.java,示例代码如下:
import com.mathworks.toolbox.javabuilder.*;
import myadd.*;
class MJBuilderTest
{
public static void main(String[] args)
{
MWNumericArray a = null;
MWNumericArray b = null;
Object[] result = null;
Myadd myAdd = null;
try
{
if (args.length != 2)
{
System.out.println("Error: must input 2 numbers!");
return;
}
a = new MWNumericArray(Double.valueOf(args[0]),MWClassID.DOUBLE);
b = new MWNumericArray(Double.valueOf(args[1]),MWClassID.DOUBLE);
myAdd = new Myadd();
result = myAdd.myadd(1, a, b);
System.out.print("/nThe sum of " + a.toString() + " and " + b.toString() + " is: ");
System.out.println(result[0]);
}
catch (Exception e)
{
System.out.println("Exception: " + e.toString());
}
finally
{
MWArray.disposeArray(a);
MWArray.disposeArray(b);
MWArray.disposeArray(result);
if (myAdd != null)
myAdd.dispose();
}
}
}
c)在Eclipse中设置好输入参数输入窗口:Run as- Run configations-Arguments 选择 要输入的数据类型,这里选择的是“string_prompt”,点击应用。
d)编译执行MJBuilderTest.java,输入参数(2个参数用空格隔开),例如:1 2 ,如果配置正确,结果会显示
“The sum of 1 and 2 is: 3”
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安装的目录中找到"...\toolbox\javabuilder\jar\javabuilder.jar"的文件,并在你刚才打包的文件夹中找到对应的包,本例中是firstOne.jar,然后将这两个jar包导入到你的Java项目当中。
b)新建JAVA类文件MJBuilderTest.java,示例代码如下:
import com.mathworks.toolbox.javabuilder.*;
import myadd.*;
class MJBuilderTest
{
public static void main(String[] args)
{
MWNumericArray a = null;
MWNumericArray b = null;
Object[] result = null;
Myadd myAdd = null;
try
{
if (args.length != 2)
{
System.out.println("Error: must input 2 numbers!");
return;
}
a = new MWNumericArray(Double.valueOf(args[0]),MWClassID.DOUBLE);
b = new MWNumericArray(Double.valueOf(args[1]),MWClassID.DOUBLE);
myAdd = new Myadd();
result = myAdd.myadd(1, a, b);
System.out.print("/nThe sum of " + a.toString() + " and " + b.toString() + " is: ");
System.out.println(result[0]);
}
catch (Exception e)
{
System.out.println("Exception: " + e.toString());
}
finally
{
MWArray.disposeArray(a);
MWArray.disposeArray(b);
MWArray.disposeArray(result);
if (myAdd != null)
myAdd.dispose();
}
}
}
c)在Eclipse中设置好输入参数输入窗口:Run as- Run configations-Arguments 选择 要输入的数据类型,这里选择的是“string_prompt”,点击应用。
d)编译执行MJBuilderTest.java,输入参数(2个参数用空格隔开),例如:1 2 ,如果配置正确,结果会显示
“The sum of 1 and 2 is: 3”
相关文章推荐
- 在Java程序中调用Matlab函数
- 在Java程序中调用Matlab函数
- java调用matlab函数接口的两种方案
- Java调用Matlab生成的函数,参数为矩阵怎么传递
- java中调用matlab的BP神经网络工具箱函数
- java 中调用 Matlab 的函数
- java中调用Matlab的函数+注意事项
- java 中调用 Matlab 的函数
- Java调用Matlab函数笔记
- Java端无需修改正确调用Matlab函数方法
- java/eclipse调用matlab功能函数
- java中调用matlab的函数
- Java调用Matlab函数以及同时配置多版本JDK的方法
- 在Java程序中调用Matlab函数
- 在Java中调用MATLAB函数
- java中调用Matlab的函数+注意事项
- java 中调用 Matlab 的函数
- eclipse中java调用matlab函数中的一点点经验
- Java和C++构造函数调用其它函数
- JAVA调用ORACLE的存储过程、函数的返回结果集