Matlab与Java混合编程的几个问题与解决方案——参数传递与读取外部文件问题

本文介绍了如何在Java中调用MATLAB算法,重点讨论了参数传递和处理MATLAB读取文件的问题。首先,确保Java和MATLAB版本匹配,并使用Library Compiler将MATLAB函数打包成jar。为了提高通用性,建议将文件路径作为参数传递,而不是硬编码在MATLAB代码中。在SpringBoot项目中,将生成的jar包和javabuilder.jar放入lib目录。在Java代码中,通过特定类调用MATLAB函数并处理返回的矩阵结果,将其转换为二维数组进行进一步操作。
摘要由CSDN通过智能技术生成

与java相比,使用matlab编写算法具有非常明显的优势。但是,想要在使用java语言编写的平台中,整合MATLAB编写的算法程序,会遇到很多问题,例如参数传递,以及在SpringBoot项目中使用。在这里做出一些说明,如果只是学习简单的java调用MATLAB程序,请看其他博客。

1 java语言调用MATLAB算法

使用java调用matlab首先要解决的是版本匹配问题。使用jdk8版本的java要对应MATLAB2017b,若版本不同,则会在打包时报错。在MATLAB命令框中输入:
version -java
即可得到当前MATLAB对应的java版本,如下图所示:
在这里插入图片描述
具体的打包方法有很多博客介绍,在这里就不详细叙述了。简单来说就是使用Library Compiler工具包对matlab的.m文件进行打包,形成Java可以使用的jar包。
在这里需要重点介绍的有以下几点:

  • 首先是.m的脚本文件不能被打成jar包使用,matlab程序应该被写为一个function函数的形式。输入变量和输出变量根据自己的情况来确定。主义要以end结尾。
    在这里插入图片描述

  • 目前的其他博客中所介绍的案例都非常简单,没有涉及到matlab程序读取文件应该如何处理的情况。
    我在这里做出说明:
    matlab程序如果引用了.txt文件或者excel表格,那么通常是会在程序中将文件的路径作为参数,调用相关的方法来实现读取文件的内容。
    在这种情况下,直接将.m文件打成jar包,则数据文件的内容也会被包含在jar文件中,后续无法修改,导致函数的通用性能很差。因此,在将.m打包之前,可以将原本写死的文件路径作为方法体的输入变量,原先程序中的文件路径值也用变量来替代,这是该程序无法直接运行,但可以在命令框中为变量赋值,然后调用方法。如下图所示。
    在这里插入图片描述
    打包之前注意查看核对输入输出参数是否正确。完成打包之后,在SpringBoot项目中的resources路径下新建lib文件,然后将刚才打包产生的jar文件复制到lib目录下。如下图所示:
    在这里插入图片描述

注意

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值