java调用matlab函数
如何将实验结果在matlab中可视化呢,下面使用java语言编程,调用matlab中的函数:
本人安装的是Matlab7.11.0 (R2010a)和 Eclipse 4.2 ;
1)首先设置环境变量,运行tomcat,Eclipse等都需要依靠环境变量JAVA_HOME,Path,classpath,具体的设置可以参考这里
为了使在matlab中将.m函数编译为jar包,还需要在classpath中添加:
%matlabInstallRoot%\R2010a\toolbox\javabuilder\jar\javabuilder.jar(具体依据matlab版本而定版本)
2)将Matlab的m文件编译成jar包
这里我们使用Matlab自带的例子,在路径
%matlabInstallRoot%\R2010a\toolbox\javabuilder\Examples\PlotExample
下,此处是m文件:
function drawplot(x, y)
plot(x, y); %%使用matlab函数plot()作图
在MATLAB中Command窗口中输入deploytool调出部署工具DeploymentTool。新建一个工程,输入工程名Demo.prj,选择路径,并选择Target为 Java Package。
在MATLAB右侧会出现我们新建的工程。
将刚刚编写的m文件直接拖拽进去,并重命名类名为plotter,点击Build编译:
点击编译后(过程有点长~),看到build finished。就会刚刚设置的路径下看到Demo的文件夹。
3)在java工程中调用matlab生成的类
新建工程TryMatlabPlot,并右键在Build Path中引用相关的包
%matlabInstallRoot%\R2010b\toolbox\javabuilder\jar\jarbuilder.jar
以及刚刚生成的plotdemo\distrib\plotdemo.jar
期间遇到的问题
【1】用matlab画图(一个工业项目),然后利用java调用,jar包什么的已经打完了,但是程序不报错,只是图像不显示。类似帖子提问
解答:java调用显示不出图的 可能是因为jdk版本问题
jdk1.7的好像显示不了。用jdk1.6的就可以了
【2】使用jdk1.6后报错,类似帖子:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Failed to find the library mclmcrrt713.dll, required by MATLAB Builder JA, on java.library.path.
This library is typically installed along with MATLAB or the MCR, its absence may indicate an issue with that installation or the current path configuration.
The MCR version that this component is trying to use is: 7.13.
解答:copy个mclmcrrt713.dll过来放到c:/windows/system32下面
MATLAB Compiler™ 能够将您的 MATLAB® 程序编译为独立的应用程序,或可与其它通用编程语言集成的共享库。通过安装MATLAB Compiler Runtime,没有 MATLAB 的用户也可以使用 MATLAB Compiler 创建的应用程序和库,而无需支付版税。您既可以将 MATLAB Compiler Runtime 与应用程序打包到一起,也可以让您的用户在安装过程中进行下载【MCR下载地址】。
今天有同学遇到这个问题,上网查了一下好像是因为你的matlab所运行的java虚拟机和你程序的java虚拟机,一个是64位,一个是32位,或者版本不同导致的。matlab输入version -java看一下java版本,然后如果是64位的就去下一个安装。我是用eclipse给你提供个eclipse 的修改方法,去你eclipse点window=>preferences=>installed JREs=>add,将新安装的加进去,然后去你的项目右键=>properties=>java build path=>libraries把之前的jre删了,然后点add librariy=>JRE system library=>alternate JRE,选你刚装的jre,finishing,ok,完成,运行吧,少年,祝好运【参考】

matlab2010Ra的java虚拟机版本是jdk1.6.0_12
java调用matlab函数的更多相关文章
- (转)JAVA 调用matlab
本文仅用于学习. 原文地址链接:http://blog.csdn.net/wannshan/article/details/5907877 前段时间摸索了java调用matlab东西,不说学的有多深, ...
- java调用matlab绘图
一 注意事项 1: MatLab的版本必须是2006b+(包括2006b或更高版本),因为只有在这些版本中才有MATLAB Builder for Java(也叫Java Builder). 2: 运 ...
- opencv通过dll调用matlab函数,图片作为参数
[blog 项目实战派]opencv通过dll调用matlab函数,图片作为参数 前文介绍了如何“csharp通过dll调用opencv函数,图片作为参数”.而在实 ...
- Android使用JNI(从java调用本地函数)
当编写一个混合有本地C代码和Java的应用程序时,需要使用Java本地接口(JNI)作为连接桥梁.JNI作为一个软件层和API,允许使用本地代码调用Java对象的方法,同时也允许在Java方法中调用本 ...
- JAVA调用matlab代码
做实验一直用的matlab代码,需要嵌入到java项目中,matlab代码拼拼凑凑不是很了解,投机取巧采用java调用matlab的方式解决. 1. matlab版本:matlabR2014a ...
- C/C++下调用matlab函数操作说明
1.matlab的安装 连接:http://pan.baidu.com/s/1qXuF7aO 安装32位版本的matlab(在目录下bin文件夹中有两个文件夹,选择win32文件夹下的setup进行安 ...
- 3D Slicer中文教程(六)—调用matlab函数(MatlabBridge使用方法)
1.安装MatlabBridge插件 (1)在工具栏找到Extension,点击进入Extension Manager (2)找到MatlabBridge,安装 2.配置MATLAB环境 (1)在模块 ...
- C++调用matlab函数
C++与matlab混合编程——C++调用MATLAB函数 笔者最近在从事一个MFC相关的项目,要求将用Matlab实现的算法通过应用MFC制作成一个小应用.其中有一部分内容需要求一个多元函数的最值. ...
- C++调用Matlab函数求特征值
最近需要用到C++和Matlab的混编,记录一下学习过程~ 要实现的是调用Matlab函数,求矩阵前k个最小的特征值及其特征向量. //C++ #include "engine.h" ...
随机推荐
- 第四次个人作业--必应词典(PC端)分析
part.1 调研.评测 ·bug简述: 1.初始使用时,我觉得划译功能很方便,可是在QQ和浏览器上多次使用划译功能后,我发现并不是每次划译总会做出翻译,而是显示原文而已.如下图: 2.敲代码是出现b ...
- C# AttributeUsage的使用浅析
C# AttributeUsage的使用是如何的呢?首先让我们来了解一下什么是AttributeUsage类它是另外一个预定义特性类,AttributeUsage类的作用就是帮助我们控制定制特性的使用 ...
- poj3692 最大点权独立集/最大独立集
题意:有男孩和女孩,男孩之间全部认识,女孩之间全部认识,一部分男孩和女孩认识,现在希望选出一些孩子,这些孩子都相互认识. 方法:正的做不好做,观察他的补图,补图之间无关系的边就是原图有关系的.补图中的 ...
- 45.Android 第三方开源库收集整理(转)
原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样, ...
- 【BZOJ-1588】营业额统计 Splay
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 12485 Solved: 4508[Submit][Sta ...
- BZOJ-1925 地精部落 烧脑DP+滚动数组
1925: [Sdoi2010]地精部落 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1053 Solved: 633 [Submit][Status ...
- Codevs1299 切水果
题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果被重复切),每切完一次输出剩下水果数量 数据已重新装配,不会出现OLE错误 时限和 ...
- appium跑demo简单实例讲解
安装appium,设置 demo.pyfrom appium import webdriver #要装webdriver,方法查看http://www.cnblogs.com/sincoolvip/p ...
- IOS基础之 (十二) Block
一 定义 Block封装了一段代码,可以在任何时候执行. Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值. 二 使用 1. 定义函数指针,然后在实现. #import & ...
- android加载大图片到内存
1)演示效果: 1)代码演示: 布局代码: 权限配置: