在Java程序中调用Matlab函数

发表于:2012-4-17 09:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Kid.Loki    来源:51Testing软件测试网采编

  环境准备

  1、机器上有Eclipse 3.1和Matlab 2007a

  2、机器的环境变量设置

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

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

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

  (2)Classpath

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

  (3)Path

  添加%JAVA_HOME%/bin/javac

  将matlab的m文件生成为jar

  1、在matlab的command窗口输入deploytool,会在右侧弹出一个新窗口(Deployment Tool)。

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

  3、确保在Deployment Tool面板中的Generate Verbose Output被勾上了。

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

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

  1. Flying -----|----distrib   
  2. | |-----flying.jar   
  3. | |-----flying.ctf   
  4. |   
  5. |-------src   
  6. | |----flying   
  7. | |----flyingclass.java   
  8. | |----flyingMCR.java   
  9. | |----classes   
  10. | |----flying   
  11. | |----flyingclass.class   
  12. | |---- flyingMCR.class   
  13. |-------build.log   
  14. |-------flying.ctf   
  15. |-------flying.jar   
  16. |-------mccExcludedFiles.log   
  17. |-------readme.txt

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

  1、在java工程属性的BuildPath中添加两个jar包:

  matlabroot\toolbox\javabuilder\jar\javabuilder.jar

  TestDirectory\flying.jar

  2、编写函数示例如下

  1. package test;   
  2.    
  3.  /**   
  4.  * test for a Matlab Call   
  5.  *   
  6.  */   
  7.    
  8.  8import com.mathworks.toolbox.javabuilder.*;   
  9.  9import flying.*;   
  10. 11public class testMatlabClass {   
  11. /**   
  12. * @param args   
  13. */   
  14.    public static void main(String[] args) {   
  15.    // TODO Auto-generated method stub   
  16.        try {   
  17.            System.out.println("Begin");   
  18.            flyingclass flyingDraw=new flyingclass();   
  19.            System.out.println("Middle");   
  20.            flyingDraw.mydraw(7,2);   
  21.            System.out.println("Here");   
  22.        }catch (Exception e){System.out.println(e);}   
  23.    }   
  24. }

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号