• SpringBoot项目调用Matlab方法


    SpringBoot项目调用Matlab方法

    需求

    java调用matlab的函数

    环境准备

    Matlab,jdk,maven管理的springboot项目

    步骤

    Matlab方面
    1. 准备一个简单函数
    function [x,y,z] = jarDemo(arg)
    disp("hello world from matlab");
    disp(arg);
    x = 1;
    y = 2;
    z = 3;
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 安装CompilerCompiler SDK,如果没有的话在命令行运行deploytool命令时会报错,会提示安装三个东西,并且点击下划线的红字可以直接打开这两个附件的安装窗口,安装即可(需要正版?)
    2. 安装之后上方工具栏的APP下可以找到Library Compiler在这里插入图片描述
    3. 点击之后出现一个窗口,窗口的TYPE栏里会有各种语言的库,如果只安装了Compiler而没有安装Compiler SDK的话TYPE栏只会有一个Excel Add-in,没法用;选择Java Package,点击加号找到需要打成jar包的函数文件jarDemo.m,可以改一下类名,这个随意,最终找个文件夹导出即可在这里插入图片描述
    java方面
    1. 找到导出的文件夹下的for_redistribution_files_only\jarDemo.jar,这是一个jar包,还需要一个Matlab\toolbox\javabuilder\jar\javabuilder.jar,这两个jar包,复制一下,复制到哪里呢,springboot项目的src\resources目录下,新建一个lib目录,复制进去
      在这里插入图片描述
      右键lib目录“添加为库”,添加到项目还是模块随你,然后这项目结构-模块-依赖里就能看到添加的这个lib文件夹了,就可以在代码里import这个类了
    2. 新建一个测试类
    import jarDemo.TestClass; // 这个是我们自己写的jarDemo.m函数
    import org.junit.jupiter.api.Test;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.boot.test.context.SpringBootTest;
    import com.mathworks.toolbox.javabuilder.*; // 这个是必须的,对matlab的支持
    public class matlabTest
    {
        private static final Logger log = LoggerFactory.getLogger(matlabTest.class);
        @Test
        public void test1() {
            log.info("开始运行");
            try {
                TestClass t = new TestClass();
                Object[] result = t.jarDemo(3, "ok?"); //第一个参数是指定返回结果的个数;第二个参数起是传入matlab函数的参数,多个用逗号隔开。
                for (Object obj : result){
                    log.info(obj.toString());
                }
            } catch (MWException e) {
                e.printStackTrace();
            }
            log.info("运行结束");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    结果

    jarDemo.m里的disp在IDEA控制台输出了,t.jarDemo()的第二个参数"ok?"也传到了matlab代码里,也disp了,返回的三个结果x,y,z也打印出来了

  • 相关阅读:
    计算机三级有必要考吗?计算机三级有哪些科目?
    3ds MAX 2024版资源包下载分享 3ds Max三维建模软件资源包下载安装
    计算机网络第四章——网络层(末)
    mybatis 连接mysql 实现CRUD
    Java日期格式
    L67.linux命令每日一练 -- 第十章 Linux网络管理命令 -- netstat和ss
    C++ 作业 24/3/11
    【数据结构】堆的拓展延伸 —— 堆排序 和 TopK问题
    安卓开发-基础知识补习12
    ssm基于Html+css的音乐网站的设计与实现毕业设计源码181627
  • 原文地址:https://blog.csdn.net/qq_43140890/article/details/128006491