与java相比,使用matlab编写算法具有非常明显的优势。但是,想要在使用java语言编写的平台中,整合MATLAB编写的算法程序,会遇到很多问题,例如参数传递,以及在SpringBoot项目中使用。在这里做出一些说明,如果只是学习简单的java调用MATLAB程序,请看其他博客。
1 java语言调用MATLAB算法
使用java调用matlab首先要解决的是版本匹配问题。使用jdk8版本的java要对应MATLAB2017b,若版本不同,则会在打包时报错。在MATLAB命令框中输入:
version -java
即可得到当前MATLAB对应的java版本,如下图所示:
具体的打包方法有很多博客介绍,在这里就不详细叙述了。简单来说就是使用Library Compiler工具包对matlab的.m文件进行打包,形成Java可以使用的jar包。
在这里需要重点介绍的有以下几点:
-
首先是.m的脚本文件不能被打成jar包使用,matlab程序应该被写为一个function函数的形式。输入变量和输出变量根据自己的情况来确定。主义要以end结尾。
-
目前的其他博客中所介绍的案例都非常简单,没有涉及到matlab程序读取文件应该如何处理的情况。
我在这里做出说明:
matlab程序如果引用了.txt文件或者excel表格,那么通常是会在程序中将文件的路径作为参数,调用相关的方法来实现读取文件的内容。
在这种情况下,直接将.m文件打成jar包,则数据文件的内容也会被包含在jar文件中,后续无法修改,导致函数的通用性能很差。因此,在将.m打包之前,可以将原本写死的文件路径作为方法体的输入变量,原先程序中的文件路径值也用变量来替代,这是该程序无法直接运行,但可以在命令框中为变量赋值,然后调用方法。如下图所示。
打包之前注意查看核对输入输出参数是否正确。完成打包之后,在SpringBoot项目中的resources路径下新建lib文件,然后将刚才打包产生的jar文件复制到lib目录下。如下图所示:
注意