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-木小草,尊重原创,尊重技术。
相关文章推荐
- Matlab
- matlab:对一个向量进行排序,返回每一个数据的rank 序号 。。。
- 用Matlab批量生成图片
- 用Matlab批量生成图片
- Matlab常用图像函数整理
- MATLAB常用图像图像预处理算法汇总(一)
- matlab事件仿真基础
- 读取文件(.txt、.excel、.csv),在c++、matlab环境中
- Matlab 图像像素点在RGB空间的显示
- Matlab 中输入希腊字母
- 开启Matlab旅程(1)对于元胞类型的赋值
- ML: Octave&Matlab Tutorial
- leach协议matlab仿真代码
- 使用matlab进行mex编译时的路径问题mexopts
- MATLAB R2012a与vs2010混合编程 error LNK2019
- Matlab中的color 画线的多种颜色
- 【matlab】用matlab 保存带标记图像、图片的方法总结
- matlab封装DLL动态链接库 再用VS2010调用(matlab VS混合编程)
- matlab cond(H)判断矩阵病态
- Matlab和java间socket通信