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. 安装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("运行结束");
    }
}
结果

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值