java 中调用matlab

本文详细介绍如何在Matlab和Java之间进行交互,包括环境配置、构建Matlab M文件为Jar包、Java调用示例及注意事项等关键步骤。

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

1.          环境准备

a)          机器上有 Eclipse 3.1 Matlab 2007a

b)          机器的环境变量设置

                         i.               JAVA_HOME (JDK 的安装位置    C:\Program Files\Java\jdk1.5.0)

l 设置后,重启 matlab 才能有效。

l getenv JAVA_HOME ,在 Matlab 的命令窗口中试验,看看得到的返回值正确方可说明其对 Matlab 生效了。

                       ii.               Classpath

l 添加 matlabInstallRoot \toolbox\javabuilder\jar\javabuilder.jar

                      iii.               Path

l 添加 %JAVA_HOME%/bin/javac

2.          build matlab m-file into a jar

a)          matlabcommand 窗口,输入 deploytool 。会在右侧弹出一个新窗口( Deployment Tool )。

b)          Deployment Tool 中,点击 new 按钮,选择 Matlab Builder for Java Java Package 。新建一个工程名字,如 flying.prj

c)          In the Deployment Tool pane, ensure that the Generate Verbose Output option is selected

d)          将欲被 java 调用的 .m 文件,(如 mydraw.m ,其中包括两个参数 (x,y) ),从 Matlab 整个界面的左侧工作目录面板,拖拽到 Deployment Tool 中的新建的类下面的 class 文件夹下。

e)          点击 build 按钮,则会在 matlab 的当前目录下,生成以一个与工程同名的 (flying) 文件夹。如果 build 成功,会看到文件夹结构如下:

Flying -----|----distrib

                  |     |-----flying.jar

                 |       |-----flying.ctf

                |

                 |-------src

                  |           |----flying

                  |                   |----flyingclass.java

                  |                   |----flyingMCR.java

                  |           |----classes

                  |                   |----flying

                  |                                   |----flyingclass.class

                  |                                   |---- flyingMCR.class

                 |-------build.log

                  |-------flying.ctf

                 |-------flying.jar

                  |-------mccExcludedFiles.log

                  |-------readme.txt

3.          编写 java 函数,准备调用刚刚生成好的 flying.jar 中的方法。

a)          java 工程 Test 属性的 BuildPath 中,添加两个 jar 包:

                         i.               matlabroot \toolbox\javabuilder\jar\javabuilder.jar

                       ii.               TestDirectory \ flying.jar

b)          编写函数示例如下

package test;

/**

* test for a Matlab Call

*

*/

import com.mathworks.toolbox.javabuilder.*;

import flying.*;

public class testMatlabClass {

         /**

         * @param args

         */

         public static void main(String[] args) {

                   // TODO Auto-generated method stub

                  

                   try {

                   System.out.println("Begin");

                   flyingclass flyingDraw=new flyingclass();

                   System.out.println("Middle");

                   flyingDraw.mydraw(7,2);

                   System.out.println("Here");

                   }catch (Exception e){System.out.println(e);}

                  

                  

         }

}

d)          如果不能正常运行,可以考虑在 classpath 中,加入 flying.jar 所在的位置。

4.          详细

a)          参见 matlab 的帮助文件

b)          www.simwe.com/forum/archiver/tid-747229.html

c)          数据类型相关

                         i.               Java 的数值型数组,可以直接作为输入参数传递到 .m 文件上。

如: mydraw(x,y) ,可以画 x=[1 2 3 4] ,y=[3.3 -5 6 10.2] 这样的线图。 Java 调用该方法时候,如果传递的参数是整型或者实数型数组,则直接可成功。

java :

int[] a=new int[4];

int[] b=new int[4];

// a,b 赋值 …//

// 调用

flyingclass flyingDraw=new flyingclass();

flyingDraw.mydraw(a,b);        

注意: a,b 最好所有有索引的位置都有值,否则如果没有充分赋值曲线可能会最终折回 (0,0) 点。

5.          Matlab 程序 (.m 文件 ) 的修改

a)          找到 TestDirectory \ flying.jar 所在的位置(因为按照上述步骤的话, .m 源文件就在该位置附近)。这个位置,从 EclipsePackage Explore 可以用看到。

b)          直接修改欲改动的 .m 文件

c)          打开 Matlab, Command 输入 Deploytool, 在新打开的部署面板中,“打开”该 m 文件所在的工程,如 flying.prj

d)          选中相应工程下 Class 文件夹下的 .m 文件,点击工具栏的 Build 按钮。

e)          则相应源文件被重新编译。如果按照前面步骤添加的 jar 包,则编译后新生成的 jar 包自动替换掉原有的 jar 。又由于这个 jar 的位置,已经作为 BuildPath 告诉了 java 的相应工程,因此 Java 端不需要做任何调整,即可正确调用到新修改了内容的 matlab 方法。

 

另:所有路径中最好不要包含中文,否则将解析不正确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值