SpringBoot集成Matlab软件实战

news2024/11/17 10:04:18

在项目中处理矩阵等复杂数据结构的时候,可以用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.coloradmin.cn/o/2176533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于HTML 案例_个人简历展示02

展示效果 用table进行布局label 标签进行关联 例如&#xff1a;点姓名就可以到text中去填写内容 input的使用 text 文本框radio 单选框select与option 选择框checkbox 复选框 textareaul与li 无序列表文中图片是本地的 链接: 图片下载地址 代码 <!DOCTYPE html> <…

《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》例10-9

灰度共生矩阵的相关性 相关性&#xff08;Correlation&#xff09; 公式 Correlation ∑ i 1 N g ∑ j 1 N g ( i − μ x ) ( j − μ y ) P ( i , j ) σ x σ y \text{Correlation} \frac{\sum_{i1}^{N_g} \sum_{j1}^{N_g} (i - \mu_x)(j - \mu_y) P(i,j)}{\sigma_x \…

基于elasticsearch存储船舶历史轨迹: 使用scroll滚动技术实现大数据量搜索

文章目录 引言I 轨迹索引的设计轨迹文档定时创建索引手动添加索引并为索引添加别名POST请求批量插入文档数据II 查询文档数据基于scroll滚动技术实现大数据量搜索查询轨迹查询参数返回dtoIII 知识扩展术语介绍基于 search_after 实现深度分页引言 需求: 存储轨迹,提供站点查…

获取用户openId存入数据库⑤

这一篇数微信公众号开发的第五篇&#xff0c;如果你是小白请点击下方第一篇的链接&#xff1a; 微信公众号开发-接口配置信息&#xff08;第①篇&#xff09;-CSDN博客 先获取token&#xff0c;代码&#xff1a; <?php //获取token $appId wx08888888888888888888; //改…

【代码】Zotero|用文章标题更新 Zotero 的参考文献引用条目信息的 Quicker 动作

如题。 目前只支持期刊和会议文章&#xff0c;并且只支持谷歌学术或 DBLP 能搜到的文章&#xff0c;知网的不支持&#xff0c;如果有人有需要我可以去试着写&#xff0c;但我很懒我看大家也没这个需求。 很早就写完了&#xff0c;一直忘记推了。 刚写完的时候心情是很激动的&a…

minio 快速入门+单机部署+集群+调优

目录 原理 概念 名词解释 Set /Drive 的关系 MinIO部署 单机 单机单盘 单机多盘 集群 多机单盘 多机多盘 配置负载均衡 调优 原理 MinIO是一个S3兼容的高性能对象存储&#xff0c;其主要特点如下&#xff1a; 适合存储大容量非结构化的数据&#xff0c;如图片&…

华为OD机试 - 静态扫描(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

jenkins 构建报错ERROR: Error fetching remote repo ‘origin‘

问题描述 修改项目的仓库地址后&#xff0c;使用jenkins构建报错 Running as SYSTEM Building in workspace /var/jenkins_home/workspace/【测试】客户端/client-fonchain-main The recommended git tool is: NONE using credential 680a5841-cfa5-4d8a-bb38-977f796c26dd&g…

深圳数字孪生工业互联网可视化技术,赋能新型工业化智能制造工厂

深圳正以前所未有的速度和力度&#xff0c;推进着数字经济与实体经济深度融合的新篇章。数字孪生工业互联网可视化技术作为关键驱动力&#xff0c;赋能新型工业化智能制造工厂&#xff0c;引领着深圳乃至全国制造业的转型升级。从精密制造到重型装备&#xff0c;从汽车电池到医…

喜讯!宝兰德荣获第三届“鼎新杯”数字化转型应用大赛二等奖

9月24日-25日&#xff0c;“2024数字化转型发展大会”在北京成功举办。来自政产学研用的专家学者、知名企业代表同台论道&#xff0c;共话数字化转型的新趋势。大会期间&#xff0c;备受瞩目的第三届“鼎新杯”数字化应用转型大赛结果正式揭晓&#xff0c;「宝兰德中间件统一管…

[240929] 12 款最佳免费开源隐写工具 | Llama 3.2: 开源、可定制模型,革新边缘人工智能和视觉体验

目录 12 款最佳免费开源隐写工具Llama 3.2: 开源、可定制模型&#xff0c;革新边缘人工智能和视觉体验 12 款最佳免费开源隐写工具 什么是隐写术&#xff1f; 隐写术是一种将信息隐藏在其他信息中的艺术和科学&#xff0c;除了发送者和预期的接收者之外&#xff0c;没有人会怀…

Agilent安捷伦N1914A双通道数字功率计操作说明

Agilent安捷伦N1914A双通道数字功率计操作说明 Keysight / Agilent N1914A EPM 系列双通道平均功率计 N1914A EPM 系列功率计为工作台/机架和现场应用提供可重复且可靠的结果。N1914A 提供高达 400 个读数/秒的测量速度&#xff0c;可实现快速、准确的平均功率测量&#xff0…

帮儿女带孩子的老人,都有以下几种共性

在现代社会中&#xff0c;随着生活节奏的加快&#xff0c;许多年轻父母需要在繁忙的工作中平衡家庭和事业&#xff0c;老人们自然成为了带孙辈的重要力量。 放眼望去&#xff0c;不少家庭的老人主动承担起了带孙子的责任&#xff0c;为子女分担了育儿的重担。 随着时代的变化…

低功耗4G模组Air780E的串口通信指南

今天我们来讲解低功耗4G模组Air780E的串口通信的基本用法&#xff0c;合宙的小伙伴们&#xff0c;学起来吧&#xff01; 一、硬件准备 780E开发板一套&#xff0c;包括天线、USB数据线。 USB转TTL工具或线&#xff08;例如ch340、ft232&#xff09; PC电脑&#xff0c;串口…

计算机考证汇总-第一期-CCF认证类

一、前言 我发现在博客文章中对于&#xff0c;计算机专业相关从业人员、学生等群体&#xff0c;并没有很详细的记录考证的信息&#xff0c;我在此便将部分证书按照个人理解简单归纳整理一下&#xff0c;有不足之处还望友好交流&#xff0c;大多数资料取自官网、相关博客及个人…

示波器带宽和测量的关系

示波器的带宽指的是-3db带宽&#xff0c;比如100MHZ带宽的示波器&#xff0c;用它测量幅度是1V&#xff0c;频率是100Mhz的正弦波&#xff0c;示波器测量值会下降到0.707V&#xff0c; 高于示波器带宽的信号会变小&#xff0c;下图是示例。一些波形也会失真。 100M带宽示波器的…

二次记录服务器被(logrotate)木马入侵事件

现象&#xff1a;SSH失败、CPU满转 服务器ssh登录不上&#xff0c;一直处于登录中状态。 于是进入云服务器控制台&#xff0c;CPU打满状态&#xff0c;知道服务器被攻击了 腾讯云入侵检测&#xff0c;高危命令报警 排查过程 尝试 VNC 登录 由于SSH登录不上&#xff0c;进入云…

WPS使用越来越卡顿

UOS统信wps频繁的使用后出现卡顿问题&#xff0c;通过删除或重命名kingsoft文件缓存目录。 文章目录 一、问题描述二、问题原因三、解决方案步骤一步骤二步骤三 一、问题描述 用户在频繁的使用wps处理工作&#xff0c;在使用一段时间后&#xff0c;用户反馈wps打开速度慢&…

繁体字能申请注册商标吗?

有些主体为了表现企业历史和文化&#xff0c;喜欢用繁体字申请注册商标&#xff0c;那繁体字可以能申请注册商标吗&#xff0c;当然是可以的&#xff0c;普推知产老杨检索在1990年《国家工商行政管理局商标局关于商标可否使用繁体字问题的答复》&#xff0c;可以使用繁体字&…

【经验技巧】如何做好S参数的仿测一致性

根据个人经验,想要做好电路板S参数的仿测一致性,如下的相关信息必须被认真对待: 1. PCB叠构(Stack up),仿真模型需要保证设计参数与板厂供应商的生产参数完全一样,这些参数包括: 叠层结构数据;介电常数;损耗因子;蚀刻因子;表面粗糙度。 2. 仿真中,需要保证信号测试…