一、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 block
e1.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函数来进行矩阵的分析操作
Linux环境下实现Java调用Windows环境下的Matlab函数
java 调用matlab的函数,把matlab的函数封装在java的类里
JAVA调用MATLAB时解决了打成JAR包之后在JAVA环境下运行的未知错误,对代码联调友好方便快速。
Java基于MCR的本地远程调用Matlab函数库源码+全部资料.zipJava基于MCR的本地远程调用Matlab函数库源码+全部资料.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2...
文章主要讲了怎么在matlab中定义并编译一个函数,以便于在java中调用,达到可扩展编程的目的
从MATLAB 中调用 Java
C++Java 如何呼叫Matlab 所提供的函数;C++Java 如何呼叫Matlab 所提供的函数;C++Java 如何呼叫Matlab 所提供的函数;C++Java 如何呼叫Matlab 所提供的函数;
013141_java中没有直接调用matlab的接口函数.docx
最近做一个项目,需要很多进行很多信号处理——小魏就是学软件的,对信号 处理简直是个小白,最简单的实现就是傻瓜似的调用 MATLAB 的各种工具箱,达到 目的就行。 同时,MATLAB 是种解释性...调用 MATLAB 编写的函数。
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,...
MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The...除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C、C++、Java、Python和FORTRAN)编写的程序。
在Java中调用cplex必须使用到的jar包,具体的使用方法可以看我的博客哟
android调用matlab代码Android-App-for-Object-Detection 这个项目是关于使用 OpenCV 和神经网络开发一个应用程序,并考虑到目标检测目标(特别是 TinyYOLOv3)。 入门 好吧,该项目已经开始使用应用程序制作的基本...
使用java调用matlab 详细代码示例说明以及用java调用matlab数学函数库参数的传递等,包含架包文件,可以直接运行使用,该代码仅供参考。
java调用matlab函数jar包
要与类一起使用,必须从任何程序包文件夹的父目录中调用此函数,并且其他包含潜在感兴趣文件的文件夹必须位于Matlab路径上。 用法示例: % 构造函数D = getDependents('Main.m'); % 返回所有依赖文件的列表w = D....
Matlab在多核处理器上的实现函数代码-Matlab_multicore.zip 我跟大家以前探讨过,如何实现Matlab多线程的运算! 今天跟大家分享一些多核运算,现在很多的人的机器是双核,四核的。 在c或者java里,实现多核...
文件在eclipse中调用MATLAB编译的jar.file 产品重点: MATLAB MATLAB 编译器 SDK 统计和机器学习工具箱Eclipse(第三方软件) 最终产品 : (它使用大约 50 秒进行训练) https://youtu.be/yvwpeEesrGE
请简要介绍MATLAB函数文件的编写和调用方法。 7. MATLAB中如何进行数据可视化(Data Visualization)?请举例说明在MATLAB中的数据可视化技术。 8. 什么是MATLAB中的控制流语句(Control Flow Statements)?请列举...