java 中调用 Matlab 的函数
来源:互联网 发布:windows 用户权限控制 编辑:程序博客网 时间:2024/05/16 11:43
一、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:上面标红的部分与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中包含的函数和类
import com.mathworks.toolbox.javabuilder.MWException;import com.mathworks.toolbox.javabuilder.MWNumericArray;import XXX.XXXX;class Test {public static void main(String[] args) {try {XXXX abc=new XXXX();Object[] result = null; /* Stores the result */int a=10, b=2;result=abc.operation(4, a, b );System.out.println(result[0].toString());System.out.println(result[1].toString());System.out.println(result[2].toString());System.out.println();} catch (MWException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} finally {/* Free native resources */System.gc();}}
如果result[0]返回的是一个数组,可以通过如下的方法解决
MWNumericArray a = new MWNumericArray(Double.valueOf(result[0].toString()),MWClassID.DOUBLE);
MWNumericArray temp = (MWNumericArray)result[0];
float [][] weights=(float[][])temp.toFloatArray();
五、可能碰到的问题
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即可。
- java 中调用 Matlab 的函数
- java 中调用 Matlab 的函数
- java中调用matlab的函数
- java中调用Matlab的函数+注意事项
- 【Matlab】在Java中调用matlab函数
- java中调用matlab的BP神经网络工具箱函数
- 在Java程序中调用Matlab函数
- 在Java程序中调用Matlab函数
- 在Java程序中调用Matlab函数
- 在Java程序中调用Matlab函数
- 在Java中调用MATLAB函数
- Java调用MATLAB函数
- matlab调用Java函数
- JAVA调用Matlab函数
- matlab中调用函数的另一种方法 @
- matlab 函数的调用
- eclipse中java调用matlab函数中的一点点经验
- VC中调用matlab函数
- 魔羯座2012年星座运势
- 分享成功程序员的多了,我写个反面的教材---一个高龄菜鸟程序员的工作经历
- 关于#pragma once
- 时间以及执行所有命令行参数
- 彩色图片变灰色,图片亮度变暗变亮--图像处理之二
- java 中调用 Matlab 的函数
- 百度cpc联盟的漏洞?还是内鬼?
- Myers Diff paper -- 0
- linux中触摸屏驱动的实现(3)——基于s3c6410处理器
- 《那些年啊,那些事——一个程序员的奋斗史》——101
- 文件流复制数据到文件 , 将文件1.txt的内容复制到2.txt 中
- Android开发之环境搭建及HelloWorld
- C格式化字符串
- socat