使用Java调用Matlab算法程序的方法有多种,在这里介绍一种在实际平台开发中较为方便做法:将MATLAB脚本程序打jar包,再使用Java程序调用。
一、处理MATLAB脚本
1.处理算法程序脚本,将其封装为函数形式
SpringBoot项目开发人员不一定也同时负责MATLAB算法程序的编写,而是使用已有的MATLAB算法程序。因此,在拿到MATLAB算法程序后,大概率应该要对算法程序脚本进行处理,将其写成方法体、也就是函数的形式。
首次拿到的MATLAB算法程序,是以程序流的形式编写的,运算后工作区中可以看到所有变量的值,包括输入值、中间变量、结果值。如下图所示:
拿到以上算法程序后,首先检验其是否能正常运行,然后根据需要将输入参数和输出结果值的变量名找到,使用function end将算法程序包裹起来,形成方法体(函数)程序。如下图所示。
其中,function后方括号中的参数为所需的结果值,等号后的“danji”为自定义的方法名,方法名后小括号中内容为方法所需的输入参数。
注意:如果程序开头有clear,clc命令,需要在写成方法体后将其注释或删除,避免该命令运行后将传入的输入参数清空。
在改写方法体时,可以首先不设置输入参数,而是在源程序相应位置写成固定的参数值,以便检验改写为方法体后,程序是否能正常运行。
改写成方法体后,运行程序,工作区中不再会出现中间变量,输入参数的内容。成功运行后,可以加上输入参数。
2.将方法体算法程序打成jar包
这一操作相对简单,只需要注意以下几个细节即可:
- 版本匹配与兼容的要求:经过查询资料和实际使用测试,电脑环境是JDK1.8,则对应MATLAB2017b版本,如版本不对应,则打包时会报错。
查看本地计算机中MATLAB对应的JDK版本方式如下:
在命令行中输入
version -java
这里显示MATLAB内置的JDK版本为1.8.0,只需要大版本一致即可,即JDK1.8。理论上也可以修改内置的JDK,有兴趣的同学可以自行探索具体操作,这里不展开。
- 打包过程的注意事项:如果这编写算法程序的过程中引用了MATLAB库以及其他文件,则需要在打包工程中将其加入。打包过程如下:
APP–>Library–>Java Package–>选择需要打包的.m文件–>根据需要修改类名–>