java调用matlab程序

本文介绍如何利用Matlab的Library Compiler工具包将Matlab算法打包成Java可用的jar文件,并通过Eclipse Java项目调用这些算法。文章详细展示了从Matlab函数到Java程序调用的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



在项目中,经常使用matlab进行算法开发验证,然后java程序调用算法。因此,快速实现对算法的调用是缩短项目周期的重要一点。在matlab中通过编译生成供java使用的jar包,再通过调用jar包可实现快速调用matlab算法。

系统环境

matlab:2016a 
java:jre1.7 
eclipse:Mars.1 Release (4.5.1)

matlab

测试函数: 
add.m

function [sum,m] = add(a,b)
sum=a.*b;
m=ims(a,b);
end
   
   
  • 1
  • 2
  • 3
  • 4

ims.m

function [ m ] = ims( a,b )
m=a+b;
end
   
   
  • 1
  • 2
  • 3

采用matlab的Library Compiler工具包打包m文件,选择java package类型,class名字命名为matlab,添加2个方法的m文件,打包生成matlab.jar文件。 
找到\toolbox\javabuilder\jar文件夹下的javabuilder.jar文件。

java

在java项目中引用生成的matlab.jar和javabuilder.jar。测试代码如下:

//java调用matlab方法
//matlab方法为[sum,m] = add(a,b)
//java中方法为matlab实例的方法matlab.add(int,object...),返回值为object[]
//其中输入的int为输出的个数,object...为输入参数,返回值object[]为输出的集合
matlab matlab;//定义matlab类型
try {
    matlab = new matlab();//实例化方法集合
    int[][] a = new int[][]{{1, 0},{0,1}};//定义输入参数
    int[][] b = new int[][]{{3, 2},{1,4}};//定义输入参数
    Object[] rs = matlab.add(2,a,b);//调用方法1,方法1中调用方法2
    System.out.println("输出结果1:");
    System.out.println(rs[0]);
    MWNumericArray is = (MWNumericArray) rs[0];//转为matlab格式矩阵
    System.out.println("输出第2行第2列数值:");
    System.out.println(is.getInt(new int[]{2,2}));
    System.out.println("输出结果2:");
    System.out.println(rs[1]);
    System.out.println("输出调用方法2的结果:");
    System.out.println(matlab.ims(1, 12,3)[0]);//调用方法2
} catch (MWException e) {
    e.printStackTrace();
}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

输出结果为:

输出结果1:
           3           0
           0           4
输出第2行第2列数值:
4
输出结果2:
           4           2
           1           5
输出调用方法2的结果:
15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值