当前位置: 首页 > article >正文

SpringBoot集成Matlab软件实战

在项目中处理矩阵等复杂数据结构的时候,可以用Matlab程序来运行,其优点是很多的。

        专用工具箱和强大的矩阵运算能力:MATLAB 拥有强大的数学工具箱和优化工具箱,适合处理大规模矩阵运算以及水文模型的率定。MATLAB 的 Optimization Toolbox 可以方便地执行模型率定中的参数优化过程。

        内置可视化和数据处理能力:MATLAB 提供内置的绘图和数据处理工具,可以方便地对率定和验证结果进行可视化分析。

        广泛应用于科研:MATLAB 广泛应用于学术界,特别是在水文学、环境工程等领域中,有许多经典的水文模型(如 HBV、SWAT)都有 MATLAB 实现版本。

下面直接开始实战集成使用。

1、pom文件引入

       <dependency>
            <groupId>org.n52.matlab</groupId>
            <artifactId>matlab-control</artifactId>
            <version>5.0.0</version>
        </dependency>

2、代码配置启动

import org.n52.matlab.control.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MatlabConfiguration {

    //matlab单例启动一次
    @Bean(name = "matlab")
    public MatlabProxy createFactory() throws MatlabConnectionException, MatlabInvocationException {

        // 手动设置 MATLAB 安装路径,一般情况下不需要设置,除非此服务器上安装了多个matlab程序
        // System.setProperty("java.library.path", "/path/to/specific/matlab/version/bin");
        // 配置 MATLAB Proxy 工厂
      /*  MatlabProxyFactoryOptions options = new MatlabProxyFactoryOptions.Builder()
                .setUsePreviouslyControlledSession(true) // 重用 MATLAB 会话
                .setHidden(true) // MATLAB 不显示界面
                .build();
        MatlabProxyFactory factory = new MatlabProxyFactory(options);*/
        MatlabProxyFactory factory = new MatlabProxyFactory();//造成频繁启动显示页面
        MatlabProxy proxy = factory.getProxy();
        // 调用 MATLAB 函数
        proxy.eval("disp('Using specified MATLAB version!')");
        System.out.println("启动matlab完成");
        return proxy;
    }
}

3、业务层或者控制层依赖注入

    @Autowired
    private MatlabProxy matlabProxy;

4、测试代码执行matlab命令

        String matlabCommand = "result = sum([0,1, 2, 3, 4, 5])";
        matlabProxy.eval(matlabCommand); // 让 MATLAB 执行命令

        // 获取 MATLAB 的计算结果
        Object result = matlabProxy.getVariable("result");

        double[] r=(double[]) result;
        System.out.print("f:");
        for (int i = 0; i < r.length; i++) {
            System.out.print(r[i]);
        }

5、测试代码执行Matlab函数

        Object[] result1 = matlabProxy.returningFeval("yd_demo", 5,2);
       // double[] key=(double[]) result1[0];
        for (int j = 0; j < result1.length; j++) {
            double[] key=(double[]) result1[j];
            for (int i = 0; i < key.length; i++) {
                System.out.println(key[i]);
            }
        }

对应的Matlab函数yd_demo.m 文件内容

function [output1, output2, output3, output4, output5] = test(input)
    % This function takes one input and returns 5 outputs
    % Example: if input = 2, output1 =
    % input*1, output2 = input*2, etc.


       % 加载 data.mat 文件
    loadedData = load('data.mat'); % 加载文件中的所有变量
    data = loadedData.data; % 提取 data 变量

       in.dat = data{1};

    output1 = input * 1;
    output2 = input * 2;
    output3 = input * 3;
    output4 = input * 4;
    output5 = input * 5;
      disp(output5)
end

 页面展示

注意:需要把使用到的*.m、*.mat等函数文件放到根目录下,即项目的pom.xml文件放在同一个文件夹下!图中也可以看到。这里JDK是1.8版本。

6、matlab安装参考

2024版本安装

到此、SpringBoot集成Matlab软件实战分享完成,后面继续更新更高级的内容,敬请期待!


http://www.kler.cn/a/320155.html

相关文章:

  • nginx 实现 正向代理、反向代理 、SSL(证书配置)、负载均衡 、虚拟域名 ,使用其他中间件监控
  • Android中下载 HAXM 报错 HAXM installation failed,如何解决?
  • 集合帖:区间问题
  • 使用PWM生成模式驱动BLDC三相无刷直流电机
  • Java在云计算中的应用:Java的秘密云基地
  • 小游戏前端地区获取
  • Hive企业级调优[8]—— 其他优化
  • LiveNVR监控流媒体Onvif/RTSP功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大
  • 鼠标经过el-dropdown组件上会出现一个蓝色的小框
  • C++——编写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。用指针方法处理。
  • Lumos学习王佩丰Excel第十五讲:条件格式与公式
  • 使用Scikit-learn实现支持向量机分类器
  • vscode 顶部 Command Center,minimap
  • 深度学习:(六)激活函数的选择与介绍
  • excel导出图片---HSSFWorkbook--SXSSFWorkbook
  • RuoYi是如何实现图片的服务器上传和地址回显
  • 中伟视界:AI算法如何精准识别井下与传送带上堆料,提升矿山安全生产效率,减少事故风险
  • Windows (rust) vulkan 画一个三角形: 窗口创建与渲染初始化
  • Python 在PDF中插入文本超链接和图片超链接 (详解)
  • 怎么制作线上报名表_解锁报名新体验
  • Skyvern:基于LLM和CV的开源RPA
  • Cookie详情(含前端和后端相关示例)
  • mysql root密码重置
  • js冒泡排序
  • 828华为云征文|华为云Flexus X实例Windows Server 2019安装护卫神防火墙——为企业运维安全发挥重要作用!!!
  • vue2加载本地html文件