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環境即可。

參考圖如下:

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包
 

<!-- 調用matlab start-->
<dependency>
  <groupId>com.matlab.javabuilder</groupId>    <!--自定義-->
  <artifactId>javabuilder</artifactId>    <!--自定義-->
  <version>1.1.0</version>    <!--自定義-->
</dependency>
<dependency>
  <groupId>com.matlab.test</groupId>    <!--自定義-->
  <artifactId>matlabtest</artifactId>    <!--自定義-->
  <version>1.1.0</version>    <!--自定義-->
</dependency>
<!-- 調用matlab end-->

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


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章