java调用matlab程序

来源:互联网 发布:linux翻译软件 编辑:程序博客网 时间:2024/06/05 15:14

  • 系统环境
  • matlab
  • java

在项目中,经常使用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

ims.m

function [ m ] = ims( a,b )m=a+b;end

采用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:           3           0           0           4输出第2行第2列数值:4输出结果2:           4           2           1           5输出调用方法2的结果:15
0 0
原创粉丝点击