关于在JAVA中调用MATLAB文件

最近在写一个项目,对于矩阵的操作等等要求非常高,与Java相比,使用MATLAB编写算法具有非常明显的优势,然后我就在尝试直接在Java中调用MATLAB的程序

对MATLAB函数的编写以及打包

首先就是对MATLAB函数进行编写,这里如果想要在Java中向MATLAB传参,我们就要把MATLAB程序写成方法体的形式,也就是函数。
在MATLAB中这样定义函数
function [输出形参表] = 函数名(输入形参表)
最后要以end结尾
所以把MATLAB程序包装成函数只需要代入这个框架即可
就像这样

function [c] = sumTest(a,b)
c = a + b
end

这样一个简单的函数就写好了
下面我们就需要把这个函数打包
打包首先要解决的就是版本匹配的问题,就是要保证MATLAB的jdk版本和系统的保持一致
获取MATLAB的jdk信息,可以在MATLAB命令行下输入:version -java
在这里插入图片描述
查看系统的jdk版本信息,可以在桌面Windows+r -> cmd
然后敲入java -version
在这里插入图片描述
如果不匹配就要更改系统的环境变量了,很多博主都有写过,这里我只放个网址就不写了吧其实是因为我懒
传送门

然后我们就可以进行MATLAB程序的打包了,在MATLAB命令行窗口下输入:deploytool
会弹出这样一个窗口,我们选择第三个Library Compiler
在这里插入图片描述
如果这里的deploytool功能无法使用,应该是下载MATLAB的时候没有选择勾选此工具箱,参阅MATLAB工具箱安装步骤安装MATLAB Compiler toolbox就可以了
在这里插入图片描述
首先在TYPE那里选择Java Package,其次在后面加号那里选择我们要打包的MATLAB程序,然后会看到下面有一个Class Name,这个名字就是我们之后导入jar后可以使用的类名,同样后面的Method Name就是可以使用的方法名。最后点击Package就可以了
储存MATLAB代码的路径一定要保证不能出现中文,否则可能会打包不成功,打包完成后会出现这样的窗口
在这里插入图片描述
同时还会弹出打包完成的后包里面的内容,就像这样,我们需要导入的jar包在第二个文件夹中
在这里插入图片描述
在这里插入图片描述

到这里,打包的工作就完成了

在IDEA中导入jar包并且运行函数

首先我们就要在IDEA中,新建一个项目,然后点击
File -> Project Structure -> Libraries,点击加号选择第一个Java就可以导入我们打包好的程序
在这里插入图片描述
注意这里因为是matlab打包的jar包,需要依赖matlab中的相关函数,所以还需要导入一个javabuilder.jar,用上面同样的方法导入
路径是toolbox -> javabuilder -> jar
导入好之后是这样的
在这里插入图片描述

接下来就是Java代码的编写了
初始化一个类(matlab打包时的那个类),通过类调用你写在.m文件中的那个方法,如果有参数,记得为它传入所需参数。如果有输出参数,使用一个Object类来接收。
这里的i表示输出参数的数量,后面是要传入的参数
在这里插入图片描述
使用MATLAB程序时,经常会输出计算得到的矩阵,但Java类没有矩阵,所以需要进行转换
下面代码可以把输出的矩阵转换成数组

MWNumericArray data = (MWNumericArray) result[0];
System.out.println(data);

这样就完成了,撒花撒花
为了这个项目我真的是忙活好久啊呜呜呜

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你数过天上的星星吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值