java调用matlab程序

在实际Java编程中,我们可能想要使用matlab编写一些复杂的数值计算算法,然后导入我们的java项目中调用。这首先需要我们matlab的jdk版本和java项目的jdk版本对应一致。想查看matlabjdk版本,可以在matlab命令行中输入version -java来查看,会看到类似下面的内容:
Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
。下面我们来看看matlab2015a版本下编写的m文件代码如何导入java中使用。
1. 在matlab中编写m文件程序,程序来源于我另一篇博文matlab实现的五彩烟花:http://blog.csdn.net/qwe6112071/article/details/50868067
2. 将m文件程序编译成java可识别的jar包。
1. 先在命令行输入:depolytool,然后会弹出如下窗口,

2. 选择 Library Compiler,会弹出如下窗口

3. 选择并填写下图图中相应的信息,完成后点击右上角的package,会弹出一个窗口,如果破解得彻底的,会提示打包成功,但如果破解得不彻底的,就会报错了。

下面是打包的运行窗口,等待时间可能会比较长。

打包完成后,会显示如下图片,然后我们进入响应目录下的for_redistribution_files_only文件夹里,即可找到我们的打好的jar包然后连同matlab安装目录下的toolbox\javabuilder\jar文件夹下的javabuilder.jar文件,一块导进我们的java程序中。

4. 然后我们通过java新建一个matlab函数转换成的类,并通过此类调用matlab函数

import yanhua.Yanhua;

import com.mathworks.toolbox.javabuilder.MWException;

public class Test1 {
public static void main(String args[]) throws MWException{

Yanhua yanhua = new Yanhua();
yanhua.yanhua();
}
}
实现效果如下所示,


值得一提的是,通过java来解析matlab的GUI界面,就会显得比较粗糙了,所以从实际出发,java调用matlab程序更适合于使用matlab进行一些大规模数值计算的场景,具体matlab程序的完整实现请查看我的另一篇文章:<

时间: 2024-10-30 02:05:06

java调用matlab程序的相关文章

我要做一个毕业设计,向网页输入一组数据,调用matlab程序,结果返回给网页,请问要怎么实现

问题描述 我要做一个毕业设计,向网页输入一组数据,调用matlab程序,结果返回给网页,请问要怎么实现 50C matlab程序是一个关于灰色关联度计算的,现在大概知道框架是这样,现在问题是网页怎么调用matlab程序 解决方案 http://www.cnblogs.com/Key-Ky/p/4266213.html 解决方案二: java 的实现方式.用java的jni 调用c++动态库.再将数据封装返回.再把数据返回到页面

java调用matlab的问题 含有多个输入参数

问题描述 最近小弟想用java调用matlab,环境配置成功了,但是当我想调用matlab通过javabuild形成的java类是却出现了问题.首先我在matlab里写了.m函数文件,该函数需要输入4个参数,都是浮点型,之后形成java包之后,在形成的java文件中却只看到含有两个传递参数的java类.然后再在命令行执行java程序时,提示错误:...undefined'dis_fd_depth'forinputargumentsoftypt'double'希望得到各位前辈的指点!!!谢谢!!下

java matlab 二维数组-java调用matlab中调用二维数组问题

问题描述 java调用matlab中调用二维数组问题 我是用的以下matlab函数 function [Theta, Phi, R] = infofusion(a1, b1, a1, b2, a3, b3): 其中a1,b1,a2,b2,a3,b3都是4*3的二维数组,并且每个数组里面都是常量,都是数,请问各位大神,如何在java调用matlab的基础上实现二维数组的调用,跪求了

java 调用exe程序挂起

问题描述 java 调用exe程序挂起 最近在做一个java工具,java多线程执行bat文件, 每个bat文件又会调用两个exe文件( a.exe | b.exe ). 每一个线程单独执行一个bat文件.线程执行bat文件. 因为数据量很大,活执行很多次bat文件(几万次吧). 当执行到某一个bat的时候,调用的某一个exe好像会阻塞, 使全部的exe都挂起(进程存在,不占用cpu,好像死了一样). 如果结束java程序的话,挂起的exe会继续执行完. 在网上查了,说在调用完bat文件,等在执

labview+matlab-在Labview中调用Matlab程序时出错,错误提示Function函数无效

问题描述 在Labview中调用Matlab程序时出错,错误提示Function函数无效 请大神们帮帮忙,这个问题怎么解决啊? 解决方案 http://wenku.baidu.com/link?url=c_f-NBJBOaw_RveWarfinIctyj5GYUQlJagTkpE_eed4JkesENfgIO9JMUYs6uU9bW8onhml7JJ5eO2V80LcmS0GsnYdNwYGEzeUgACOguu

java调用matlab编译打包出的jar文件调用randperm问题

问题描述 java调用matlab编译打包出的jar文件在matlab函数中调用了randperm但每次执行所产生的随机数都是一样的如何解决这个问题 解决方案

Java调用windows程序

由于工作中要使用Java调用4U Wma Mp3 Converter命令行将vox格式转换成WMA格式,以方便在网页中试听,所以想到用java.lang.Runtime来处理这个问题.在使用过程中碰到了一些以前没有留意的问题,整理如下: 一 最简单的调用方式String cmd="WMAMP3Converter.exe";java.lang.Runtime.getRuntime().exec(cmd+" /""+filePath+"/"

java调用matlab读取.mat文件

问题描述 大家好,我有一个问题请假大家.我有一段matlab程序,程序最终会生成一个.mat文件,文件当中存储的是数据矩阵的形式0.0699588477366260.1083333333333330.1134259259259260.254629629629630.2623456790123460.1425925925925930.2430555555555560.0428240740740740.0853909465020580.0666666666666670.064814814814815

java调用c程序通信示例代码_java

复制代码 代码如下: //===============Client Struct================#pragma pack(push,4) #define LOG_SEND 0#define MSG_SEND 1#define EXIT_SEND 2#define BUFFER_MAX_SIZE 512#define HEADER_LEN  sizeof(Header)typedef struct HeaderStruct{ int OP;//OP : 0--> Login  1