近来因为甲方需要做拟合等功能,需要用到matlab软件,并将其功能在java中实现,然后在服务器上也要实现,因为之前根本没有听说过,所以我苦心泣血,狂干一星期找到了,踩了无数个坑,终于实现了,因此想分享给大家!

目录

一、Windows下java调用matlab

1、Matlab安装

2、Matlab中打jar包(基于R2018b版本,但是R2020以下都适用)

可能遇到的问题!!!

3、在java中使用matlab生成的jar包


一、Windows下java调用matlab

1、Matlab安装

网上很多教程,这里不建议装太新的版本,因为容易出错误!!!

要注意的地方就是,一定要注意版本!!!下面会介绍

2、Matlab中打jar包(基于R2018b版本,但是R2020以下都适用)

1、我们先创建一个.m文件,直接新建脚本,把这段代码复制进去就行

//这是相比于其他人复杂一点的程序,输入一个变量,并返回一个数组
//test(input) 是你的函数
function [result1, result2, result3] = test(input)result2 = 3;result3 = 2;result1 = input;end

2、命令行窗口测试

test(4)

3、进行编译打包

在命令行输入deploytool

deploytool

①选择java package

②选择自己要打包的.m文件(如果找不到的话,请返回主界面,将文件夹改为当前.m文件的文件夹)

③填写jar包名字

④修改类名

⑤右上角的Package点击

⑥成功后

⑦找到for_redistribution_files_only文件即可有jar包

 可能遇到的问题!!!

1、有可能在你的.m文件中注释导致你的打包出现问题,请删除!!!

2、java版本对应的问题

命令行输入version -java

version -java

找到当前matlab版本对应的jdk环境,一定要对应!!环境变量也要设定好!

3、文件类型无效,提示只能接受具有单个入口点的MATLAB函数和MEX文件作为导出函数!!

可能你的.m文件是一个类,matlab由于版本的原因,我尝试了R2022版本的,是可以将类文件进行打包的,但是2018版本就不能打包,(类文件是方便写程序,使得程序比较简单)所以,我们将类文件,改成一个或者多个单个函数的.m文件,

例如:

test.m文件调用了psobj.m,启动程序是test.m,我们进行打包,

我们只需选择

psobj.m文件会自动添加

至此,Jar包就生成完毕了

3、在java中使用matlab生成的jar包

在项目中创建lib文件夹,将刚刚生成的jar包,复制到该文件夹下,

将jar包引入

选择library

找到该项目下jar包的位置,确定OK!

我们只需要引入import,即可引入成功,我这里用matlabTest举例

import XX.XX;
//第一个xx是你的包名,第二个是你的类名
//我引入
import matlabTest.matlabTest;

点进去看一下源码,那我们的函数怎么使用呢,输入的参数一定要和你的.m文件对应!!

public void untitled(List var1, List var2) throws MWException {this.fMCR.invoke(var1, var2, sUntitledSignature);}public void untitled(Object[] var1, Object[] var2) throws MWException {this.fMCR.invoke(Arrays.asList(var1), Arrays.asList(var2), sUntitledSignature);}
//我们一般使用这个方法,第一个参数是指你返回多少结果,第二个参数指 你可以输入多个参数,也就是你matlab中想要输入的参数,untitled是我在matlab中函数的名字public Object[] untitled(int var1, Object... var2) throws MWException {Object[] var3 = new Object[var1];this.fMCR.invoke(Arrays.asList(var3), MWMCR.getRhsCompat(var2, sUntitledSignature), sUntitledSignature);return var3;}

在使用matlab生成的jar包时,我们还需要将javabuilder导入!!!

具体的位置是在:xx\MATLAB\R2018b\toolbox\javabuilder\jar\javabuilder.jar

xx\MATLAB\R2018b\toolbox\javabuilder\jar\javabuilder.jar

上述同样的方法,导入即可!

public class test {public static void main(String[] args) throws MWException {matlabTest test = new matlabTest();test.untitled(1,"参数1","参数2");}
}

即可进行操作!!

注意:

因为matlab中经常使用二维数组,故我们也有对应的类,并将data作为参数传入即可!!

double[][] doubles ={{1,1,1,1},{2,2,2,2},{3,3,3,3}};
MWNumericArray data = new MWNumericArray(doubles, MWClassID.DOUBLE);

至此 在windows下调用matlab生成的jar包即可完成!请大家有问题的话,多多评论留言!

Windows下的Matlab与Java的混合编程,Java调用matlab编译的jar包(linux下请看我另外版本!)相关推荐

  1. c 使用matlab引擎,[转载]C与MATLAB混合编程之调用MATLAB引擎

    Visual Studio调用MATLAB需要的配置已经在<Visual Studio调用MATLAB的配置>一文中给出了详细的步骤,本文将介绍混合编程的示例. 在C中调用MATLAB,据 ...

  2. c 与matlab混编,C与MATLAB混合编程之调用MATLAB引擎

    Visual Studio调用MATLAB需要的配置已经在<Visual Studio调用MATLAB的配置>一文中给出了详细的步骤,本文将介绍混合编程的示例. 在C中调用MATLAB,据 ...

  3. linux双击运行jar包,linux下发布JAR包 并运行

    虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的通用shell脚本. 只需要修改一些配置变量,就可以用 ...

  4. 调用matlab混合编程,vc调用matlab的m文件混合编程(引擎方式)

    // test.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include #include #include /************* ...

  5. Matlab与C/C++混合编程 (基于Opencv库)

    之前用过基于VS2018 与MATLAB2018a 混合编程(C++特性)(见https://blog.csdn.net/wwwoowww/article/details/83013801),奈何后来 ...

  6. 【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

    转自:matlab与C/C++混合编程--在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 date version comments ...

  7. Matlab与C/C++混合编程接口及应用

    http://www.cnblogs.com/lidabo/archive/2012/08/24/2654148.html 在参考文献基础上.补充和完善了. Matlab与C/C++混合编程接口及应用 ...

  8. Matlab与C/C++混合编程调用OpenCV

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com http:/ ...

  9. matlab与c 接口与混合编程,Matlab与C/C++混合编程接口及应用方法解析

    1 引言 Matlab 是当前应用最为广泛的数学软件,具有强大的数值计算.数据分析处理.系统 分析.图形显示甚至符号运算等功能[1].利用这一完整的数学平台,用户可以快速实现十分 复杂的功能,极大地提 ...

  10. matlab和C/C++混合编程--Mex

    最近的项目需要matlab和C的混合编程,经过一番努力终于完成了项目要解决的问题.现在就将Mex的一些经验总结一下,当然只是刚刚开始,以后随着学习的深入继续添加.首先讲讲写Mex的一些常规规定,然后我 ...

最新文章

  1. Redis队列的应用
  2. 怎么自学python自动化测试-学习自动化测试,如何学习Python语言?
  3. 【.Net Micro Framework PortingKit – 14】TinyCLR编译与测试
  4. HBase数据模型:rowkey timestamp 列族 cell
  5. 【海洋女神原创】谈谈静默安装
  6. android通用的UUID唯一标示符
  7. 使用CAtlRegExp正则表达式检查浮点数输入
  8. 牛津、剑桥、OpenAI联合发出AI预警《人工智能的恶意使用》
  9. spring电子书_不懂Spring就彻底放Java吧
  10. 苹果cmsv10精仿迅播影院2tu风格主题模板
  11. React 学习之路 (五)事件处理
  12. 泰坦尼克 数据集_数据分析(一):11招入门数据分析
  13. Bootstrap3.0学习第十二轮(导航、标签、面包屑导航)
  14. jar包转换为exe可执行文件
  15. fgo7.27服务器维护,【FGO日服】维护通知(7/12)
  16. 银行笔试题目汇总——综合能力测试
  17. android获取角速度,android dyrscope sensor 角速度传感器调试
  18. 基于android手机实时监控ipcam视频之一:RTSP
  19. Fraction分数类II
  20. HBuilderX代码提示失效解决方案

热门文章

  1. 图卷积神经网络笔记——第六章:(1)基于PyTorch的时序数据处理(交通流量数据)
  2. 在路上—Tinyfool的程序员生涯(大学篇)
  3. c语言中double sper是什么意思啊,C语言的文件操作的使用
  4. (一)Bentley(OBD)二次开发-建筑对象的构件结构
  5. python输入两个数字、输出和差积商_C语言程序设计:输入两个整数,计算并输出它们的和、积、差、商和余数各是多少?...
  6. 任意角的正弦怎么用计算机算,任意角的正弦函数、余弦函数的定义、
  7. 如何在MATLAB上使用GUP加速跑代码
  8. 如何搭建网站?第一步:建站准备
  9. 北川汉龙小学奇迹背后的真相
  10. 2020房地产顾客满意度调查