您的位置:首页 > 编程语言 > MATLAB

Java与Matlab混合编程

2016-03-16 22:18 609 查看

Java与Matlab混合编程

注意:转载请说明,来自转自itboy-木小草尊重原创,尊重技术

环境要求

Matlab至少是2015a及以上版本,之前我用的2014b怎么都不行,最后在http://www.matlabsky.com/上看到说是2014班没有破解完全

java我用的1.7,应该没什么要求

matlab导jar包

写好matlab之后,在控制台打
deploytool
,选择导出jar包,起名字,选择路径什么的,都很简单,然后完成了还要等一会,就能得到jar包了。

使用Matlab的jar包

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

matlabroot\toolbox\javabuilder\jar\javabuilder.jar

TestDirectory\flying.jar

编写函数示例如下

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);
}
}
}


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

详细

参见 matlab 的帮助文件

http://www.simwe.com/forum/archiver/tid-747229.html

数据类型相关

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)点。

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

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

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

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

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

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

注意:转载请说明,来自转自itboy-木小草尊重原创,尊重技术
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: