最近,公司的一个项目要结合matlab 做一些算法预测。传递的参数大部分是矩阵结构,在java中可以用二维数组表示。
首先百度搜索资料,尝试过matlab 的.m文件打包成jar的形式,这个是可行的,只不过jar的形式受限比较大,jdk运行版本要求严格,而且后期的.m文件的修改,要重新打包,增加运维成本。
最终参照这篇博客的经验,,https://blog.csdn.net/qq_27731689/article/details/81068516。其实使用的是matlabcontrol api。
因我的是web项目,防止每次计算都会启动matlab,创建一个Listener来代理;只要springboot启动后,后面就无需在次启动,Listener代码结构如下:
MatlabListener.java
import java.io.File;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import matlabcontrol.MatlabConnectionException;
import matlabcontrol.MatlabInvocationException;
import matlabcontrol.MatlabProxy;
import matlabcontrol.MatlabProxyFactory;
import matlabcontrol.MatlabProxyFactoryOptions;
public class MatlabListener implements ServletContextLis