Java调用Matlab程序&Maven添加本地jar包到repository仓库&java调用matlab函数范例

本文包含知识点:
一、matlab程序打包成jar包
二、Maven添加本地jar包到repository仓库
三、java调用matlab函数范例

Part 1:matlab打包jar包
1、需保持matlab和java开发环境所使用的jdk版本一致
matlab中查看jdk版本命令如下:

>> getenv JAVA_HOME
ans =
    'C:\Java\jdk1.8.0_161'


2、matlab打jar包方式如下:
菜单位置:APP-->Library Compiler:
参数设置:
1、TYPE:java package
2、EXPORTED FUNCTIONS:选择需要通过java调用的函数
3、PACKAGING OPTIONS:选中Runtime downloaded from web
4、Library infomation:默认值即可
5、Class Name:默认为Class1,双击可修改
6、以上设置完成后,点击右上角的Package按钮(背景图为勾),安静等待片刻即可完成
7、完成后,会默认打开输出目录,找到\matlab\for_testing\matlab.jar,按下文步骤导入java环境即可。

参考图如下:
Java调用Matlab程序&Maven添加本地jar包到repository仓库&java调用matlab函数范例_第1张图片

Part 2:Maven添加本地jar包到repository仓库
1、打开cmd,进入jar包所在目录
2、执行以下命令进行安装
1)、javabuilder包(必须,执行时依赖此包)

重点:mvn install:install-file -Dfile=javabuilder.jar -DgroupId=com.matlab.javabuilder -DartifactId=javabuilder -Dversion=1.1.0 -Dpackaging=jar

需注意,每个参数前都带有"-D"。

D:\Program Files (x86)\MATLAB\R2018a\toolbox\javabuilder\jar>mvn install:install-file -Dfile=javabuilder.jar -DgroupId=com.matlab.javabuilder -DartifactId=javabuilder -Dversion=1.1.0 -Dpackaging=jar
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom ---
[INFO] Installing D:\Program Files (x86)\MATLAB\R2018a\toolbox\javabuilder\jar\javabuilder.jar to C:\Users\li\.m2\repository\com\matlab\javabuilder\javabuilder\1.1.0\javabuilder-1.1.0.jar
[INFO] Installing C:\Users\li\AppData\Local\Temp\mvninstall2898445655770503508.pom to C:\Users\li\.m2\repository\com\matlab\javabuilder\javabuilder\1.1.0\javabuilder-1.1.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.531 s
[INFO] Finished at: 2019-03-05T10:13:08+08:00
[INFO] Final Memory: 6M/121M
[INFO] ------------------------------------------------------------------------

2)、特定业务函数jar包

D:\Program Files (x86)\MATLAB\R2018a\toolbox\javabuilder\jar>mvn install:install-file -Dfile=matlabtest.jar -DgroupId=com.matlab.test -DartifactId=matlabtest -Dversion=1.1.0 -Dpackaging=jar
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom ---
[INFO] Installing D:\Program Files (x86)\MATLAB\R2018a\toolbox\javabuilder\jar\matlabtest.jar to C:\Users\li\.m2\repository\com\matlab\test\matlabtest\1.1.0\matlabtest-1.1.0.jar
[INFO] Installing C:\Users\li\AppData\Local\Temp\mvninstall7620595511020354694.pom to C:\Users\li\.m2\repository\com\matlab\test\matlabtest\1.1.0\matlabtest-1.1.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.397 s
[INFO] Finished at: 2019-03-05T10:16:00+08:00
[INFO] Final Memory: 6M/153M
[INFO] ------------------------------------------------------------------------
D:\Program Files (x86)\MATLAB\R2018a\toolbox\javabuilder\jar>

3、在pom.xml中引入jar包
 



  com.matlab.javabuilder    
  javabuilder    
  1.1.0    


  com.matlab.test    
  matlabtest    
  1.1.0    

Part 3:编写java端调用代码(以下内容来源:https://blog.csdn.net/jinliwei1990/article/details/55505133,感谢原创!)

package com.demo.matlab;

import com.mathworks.toolbox.javabuilder.MWException;//必须
import com.mathworks.toolbox.javabuilder.MWNumericArray;//必须
import matlab.matlab;//必须

/**
 * TO-DO:
 * Created by lidh on ${date} 10:06.
 * Company: LMT Co.,Ltd.
 */
public class MatlabTest {
    public static void main(String[] args) {
        //java调用matlab方法
        //matlab方法为[sum,m] = add(a,b)
        //java中方法为matlab实例的方法matlab.add(int,object...),返回值为object[]
        //其中输入的int为输出的个数,object...为输入参数,返回值object[]为输出的集合
        matlab matlab;//定义matlab类型
        try {
            matlab = new matlab();//实例化方法集合
            int[][] a = new int[][]{{1, 0},{0,1}};//定义输入参数
            int[][] b = new int[][]{{3, 2},{1,4}};//定义输入参数
            Object[] rs = matlab.add(2,a,b);//调用方法1,方法1中调用方法2
            System.out.println("输出结果1:");
            System.out.println(rs[0]);
            MWNumericArray is = (MWNumericArray) rs[0];//转为matlab格式矩阵
            System.out.println("输出第2行第2列数值:");
            System.out.println(is.getInt(new int[]{2,2}));
            System.out.println("输出结果2:");
            System.out.println(rs[1]);
            System.out.println("输出调用方法2的结果:");
            System.out.println(matlab.ims(1, 12,3)[0]);//调用方法2
        } catch (MWException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

输出结果1:
   3   0
   0   4
输出第2行第2列数值:
4
输出结果2:
   4   2
   1   5
输出调用方法2的结果:
15


 

你可能感兴趣的:(java,matlab)