博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA 调用matlab【转】
阅读量:5030 次
发布时间:2019-06-12

本文共 3365 字,大约阅读时间需要 11 分钟。

在此感谢分享:

前段时间摸索了java调用matlab东西,不说学的有多深,也算有结果了,达到目的了。也即用java程序可以调用matlab中函数了。

    按顺序说吧,最开始肯定是下个matlab看看。下哪一个呢。开始下一个7.0觉得很新了。后来才觉得不是,现在都有7.8了。同时网上还流传着另外一种版本号信息,即2006版、 2006a版、2008b版,后来从网上找资料才知道,原来,matlab是一年两版的,叫a版和b 版。比如MATLAB 7.2 (Release 2006a),我下的是m7.8即2009a版。网上有对应关系,有兴趣可以找一下。

    先说明一下,我用java调用matlab用的是matlab人提供的,MABLAB BUILDER JA工具,还要告诉你,这工具2006b版以前是没有的,我想以前java可能通过JNI通过c来调用matlab的。所以你下载时要注意版本了。还有一点要说明下,如果你用的是AMD的处理器,不是intel的处理器,安装matlab后,可能不能运行,具体表现是,一打开就关闭了。我公司机器用就是AMD的处理器,解决办法其实也很简单,就是给你的机器新建立一个系统变量,变量名是BLAS_VERSION,变量值是D://MATLAB7//bin//win32//atlas_Athlon.dll(你的matlab安装地址)。

   然后,就是我们学着用MABLAB BUILDER JA了,开始不知道看matlab帮助,只是从网上看别人写的东西,关于这样的文章基本上出自一个娘胎,我不明白的地方,都一样的没有。后来看到了matlab帮助文档了,确实兴奋了一把,那才是最正宗的。下面我就试着按照它的说明一步一步说一下。

    先来,介绍一下MATLAB® Builder™ JA吧,它是 MATLAB® Compiler™的扩展产品,用它你可以把你的m-code文件包装起来,并打包到一个多个class文件中,这样的你的java程序就能用matlab了,其实是这样的,m-codeiv当然就是你想调用的matlab程序了。

   要说明一点,如果你只是在安装matlab的机器上,用java调用运行由MATLAB® Builder™ JA生成的jar包,当然可以。

   如果你要在没有安装matlab的机器上用java调用这些jar包,怎么办?也是可以的,不过,不过你要先在机器上安装matlab提供的MATLAB Compiler Runtime (MCR),它的安装文件在C:/Program Files/MATLAB/R2009a/toolbox/compiler/deploy/win32下(你的安装目录下)文件名MCRInstaller.exe。

   准备工作:

   java环境,JAVA_HOME设置正确。还有一点你jdk版本要是1.6以上的,1.5可能有错。

   关键部分来了,在这部分你可以,通过一个例子,看到一个M-code function转变成为java可调用组件。

   这个例子的名字叫,magic square,这个例子让你学会如何,创建一个叫magicsquare 的java组件,它主要包括一个 magic class,和一个jar文件,还有其它上些发布组件用到的文件。magic .class是最关键的,就是它包装了, MATLAB 的函数 makesqr, makesqr函数是计算魔方数组用的,后面我们就是java程序,调用这个函数。

    MATLAB Builder JA,可以通过在matlab命令,deploytool 调出,在这之间,为了验证matlab已能得到你的java环境了,你可以用,getenv JAVA_HOME来验证一下,能返回你的JAVA_HOME就是正确的了。

    这个例子的,m代码和java代码,matlab都帮我们写好了。你现在需要做的就是把它的代码拷贝你的工作空间中,它是例子在

    matlabroot /toolbox/javabuilder/Examples/MagicSquareExample .

   matlabroot就是matlab的安装目录。

    拷贝MagicSquareExample这个文件夹到你工作空间, for example, D:/javabuilder_examples

    记得不要有空格。把MagicSquareExample子目录改名为 magic_square,现在的文件结构应该是D:/javabuilder_examples/magic_square .没错的话。然后把matlab工作空间转到D:/javabuilder_ examples/magic_square。 最后,要用m-code function我们要先测试它,打开makesqr.m文件,然后在matlab命令行中,输入 makesqr(5),看看结果是不是

17 24  1  8 15 deploytool 调出 MATLAB Builder JA,它应该是如下这个样子,

然后你选择MATLAB BUILDER JA,新建一个工作,点击Browse按钮把你的工作放在 D:/javabuilder_examples/magic_square.输入magicsquare 作为工程名称。默认工程名字也是 D:/javabuilder_examples/magic_square目录下的包名。 MATLAB Builder JA 分配classes存放的文件夹名是按工程名称来设置的,所以在本工作中,Magicsquare 就是作为,calsses存放目录 名称了,我们要手动改它名字为,class,直接右击就可以改了。(这也是我以前看别人文章的,老找不到他们所谓的class文件夹的原因,也没人说这个问题) 工作建好以后,你可以setting你的工程,matlab的指南上说,让我们把Generate Verbose Output 选项选上,这样就能看到出错信息,实际上它默认是选择的。 然后,把m文件添加到工程中,在matalb中找到makesqr.m 文件把它,用鼠标拖到工程的magic文件夹下。然后保存工程。 下面就是构建工程,点击面板上方

按钮,等待一会,matlab就会你的工程目录下,创建src 和distrib两个文件夹。 src目录中包括有,生成的java文件,magic.class。distrib目录中包括有java存档文件,magicsquare.jar。

23  5  7 14 16

 4  6 13 20 22
10 12 19 21  3
11 18 25  2  9
下面就是把m-code函数创建成一个java组件。用刚才说的,

接下来,就是验证你用matlab builder ja生成的java组件是不是能用的时候了。

先在你的java ide中建立一个java工程,然后把刚才生成的magicsquare.jar,还有,matlabroot/toolbox/javabuilder/jar/javabuilder.jar加入你的java工程构建路径中去。

然后你把D:/javabuilder_examples/magic_square/MagicDemoJavaApp下的getmagic.java测试文件拷贝到你java工程下,然后直接运行它。具体是怎么调用的,你看一测试代码就知道了,很easy.

就可以测试了。它是提示你输入一个数。如输入5,回车得到

Magic square of order 5 17 24  1  8 15 23  5  7 14 16  4  6 13 20 22 10 12 19 21  3 11 18 25  2  9

就正确了。

 

 

最后补充一点,我在公司机器上运行这个例子时,能出结果,但出结果前,老是报

这个错,但在我家,自己的机器上就没有这个错误,要说明一点的是,我家自己机器上用的INTEL的cpu,公司用的是AMD的,其它没什么区别。也不知是什么原因。

转载于:https://www.cnblogs.com/ellisonDon/archive/2012/10/18/2728768.html

你可能感兴趣的文章
ARTS打卡第13周
查看>>
循环队列的运用---求K阶斐波那契序列
查看>>
pta 编程题14 Huffman Codes
查看>>
初始化bootstrap treeview树节点
查看>>
python selenium向<sapn>标签中写入内容
查看>>
JS常用坐标
查看>>
使用”结构化的思考方式“来编码和使用”流程化的思考方式“来编码,孰优孰劣?...
查看>>
C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)【转】...
查看>>
关于git的认证方式
查看>>
字符串按照字典序排列
查看>>
IOS 开发调用打电话,发短信
查看>>
CI 框架中的日志处理 以及 404异常处理
查看>>
keepalived介绍
查看>>
css3 标签 background-size
查看>>
python itertools
查看>>
Linux内核调试技术——jprobe使用与实现
查看>>
样式、格式布局
查看>>
ubuntu设计文件权限
查看>>
Vue双向绑定原理详解
查看>>
Android基础总结(5)——数据存储,持久化技术
查看>>