因为java在打包成为字节码后是被jvm解释执行的。
❷ JAVA调用MATLAB的程序怎么才能脱离MATLAB运行
脱离matlab工作环境,实现matlab与visualbasic语言的混合编程
以下讨论是在matlab7.0软件和vc++6.0软件环境中进行:
一、将matlab的.m文件编译成.exe文件,实现matlab与visual
basic语言的混合编程
1
❸ java与matlab混合编程报错
你是java调用matlab还是matlab调用java?
有些功能是不支持混合调用的,比如matlab中sym等函数。
❹ java和matlab之间数据类型的转换规则
其实java和matlab类型的转换并不困难,java与matlab可以混合编程,所以你可以在matlab端写一个M文件用于将matlab的矩阵换为数组(这个很简单三),然后将数组发给java端~同理在matlab端还写一个m文件用于将从java端发来的数组转换为矩阵,不需要强转,你只需要建一个新的矩阵,然后将数组的内容填进去就ok啦~
希望能够帮助到你!
❺ matlab与java混合编程有什么作用
Java和matlab混合编程
如果用Matlab和java混合编程开发Windows的应用程序则可以实现优势互补,缩短开发时间,降低程序设计的复杂度。同时程序可以脱离Matlab环境独立运行,在工程计算和教学实践中都具有实际意义。
1.使用java调用Maltab函数的基本方法是:通过Java Builder实现Java调用Matlab。在Java环境中直接调用Matlab所生成的Jar包。
下面以在Java中产生任意维数的魔方矩阵,计算任意矩阵的特征向量和特征值,对两组数据进
行拟合并绘制拟合曲线三个实例来说明通过Java
Builder实现Java调用Matlab的过程。传统的纯Java编程实现上述实例非常复杂,甚至很难完成。这一问题在Matlab中只需要调用几个
函数即可完成。
1.1、将Matlab函数包装成Java类
首先在Matlab中编写三个M文件:
Eig.m
function [v,d]=Eig(input)
format long
[v,d]=eig(input);
End
Magic.m
function f =Magic( input )
f=magic(input);
end
Plot.m
function Plot(x,y )
p=polyfit(x,y,3);
t=min(x):max(x)/100:max(x);
s=polyval(p,t);
plot(x,y,'*',t,s);
title('数据拟合结果');
xlabel('x');
ylabel('y');
end
其次,在Matlab中新建一个Deployment
Project,名称为MyProject.prj,类型为Java
package。在Project中新建三个Class,分别为GetEig,GetMagic,PolyFit。将
Eig.m,Magic.m,plot.m分别添加到上述Class中。之后点击Builder the project,等待编译成功即可。
1.2、在Java中调用Matlab函数
新建一个Java类JavaMatlab,并引入相关的包。
import com.mathworks.toolbox.javabuilder.*;//引入Matlab相关包
import MyProject.*;//引入建立的包及类
调用时Java与Matlab之间的参数传递需要通过MWNumericArray完成。具体的调用代码如下:
package org.genius.ExpandJava;
import MyProject.*;
import com.mathworks.toolbox.javabuilder.*;
public class JavaMatlab {
public static void main(String[] args) {
MWNumericArray a = null; // 用于保存矩阵
MWNumericArray ax = null; // 用于保存矩阵
MWNumericArray ay = null; // 用于保存矩阵
Object[] result = null; // 用于保存计算结果
GetEig getEig = null;
GetMagic getMagic=null;
PolyFit polyFit=null;
int r = 4; // 魔方矩阵维数
int array[][]={{50,-20,0},{-20,80,60},{0,60,-70}};
double x[]={0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1};
double y[]={-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.3,11.2};
try {
//产生魔方矩阵并打印
a = new MWNumericArray(r, MWClassID.DOUBLE);
getMagic = new GetMagic();
result = getMagic.Magic(1,a);
System.out.println("产生的四维魔方矩阵:");
System.out.println(result[0]);
MWArray.disposeArray(result);
//计算所给矩阵的特征向量和特征值并打印结果
a = new MWNumericArray(array, MWClassID.DOUBLE);
getEig = new GetEig();
result = getEig.Eig(2, a);
System.out.println("原始矩阵:");
System.out.println(a.toString());
System.out.println("得到的特征向量:");
System.out.println(result[0]);
System.out.println("得到的特征值:");
System.out.println(result[1]);
MWArray.disposeArray(result);
ax = new MWNumericArray(x, MWClassID.DOUBLE);
ay = new MWNumericArray(y, MWClassID.DOUBLE);
polyFit = new PolyFit();
result=polyFit.Plot(ax,ay);
polyFit.waitForFigures();
} catch (Exception e) {
System.out.println("Exception: " + e.toString());
}
finally {
// 释放本地资源
MWArray.disposeArray(a);
MWArray.disposeArray(ax);
MWArray.disposeArray(ay);
MWArray.disposeArray(result);
getEig.dispose();
getMagic.dispose();
polyFit.dispose();
}
}
}
❻ 如何在java中调用matlab代码
前段时间摸索了java调用matlab东西,不说学的有多深,也算有结果了,达到目的了。也即用java程序可以调用matlab中函数了。
按顺序说吧,最开始肯定是下个matlab看看。下哪一个呢。开始下一个7.0觉得很新了。后来才觉得不是,现在都有7.8了。同时网上还流传着另外一种版本号信息,即2006版、 2006a版、2008b版,后来从网上找资料才知道,原来,matlab是一年两版的,叫a版和b 版。比如MATLAB 7.2 (Release 2006a),我下的是m7.8即2009a版。网上有对应关系,有兴趣可以找一下。
先说明一下,我用java调用matlab用的是matlab人提供的,MABLAB BUILDER JA工具,还要告诉你,这工具2006b版以前是没有的,我想以前java可能通过JNI通过c来调用matlab的。所以你下载时要注意版本了。还有一点要说明下,如果你用的是AMD的处理器,不是intel的处理器,安装matlab后,可能不能运行,具体表现是,一打开就关闭了。我公司机器用就是AMD的处理器,解决办法其实也很简单,就是给你的机器新建立一个系统变量,变量名是BLAS_VERSION,变量值是D://MATLAB7//bin//win32//atlas_Athlon.dll(你的matlab安装地址)。
然后,就是我们学着用MABLAB BUILDER JA了,开始不知道看matlab帮助,只是从网上看别人写的东西,关于这样的文章基本上出自一个娘胎,我不明白的地方,都一样的没有。后来看到了matlab帮助文档了,确实兴奋了一把,那才是最正宗的。下面我就试着按照它的说明一步一步说一下。
先来,介绍一下MATLAB® Builder™ JA吧,它是 MATLAB® Compiler™的扩展产品,用它你可以把你的m-code文件包装起来,并打包到一个多个class文件中,这样的你的java程序就能用matlab了,其实是这样的,m-codeiv当然就是你想调用的matlab程序了。
要说明一点,如果你只是在安装matlab的机器上,用java调用运行由MATLAB® Builder™ JA生成的jar包,当然可以。
如果你要在没有安装matlab的机器上用java调用这些jar包,怎么办?也是可以的,不过,不过你要先在机器上安装matlab提供的MATLAB Compiler Runtime (MCR),它的安装文件在C:/Program Files/MATLAB/R2009a/toolbox/compiler/deploy/win32下(你的安装目录下)文件名MCRInstaller.exe。
准备工作:
java环境,JAVA_HOME设置正确。还有一点你jdk版本要是1.6以上的,1.5可能有错。
关键部分来了,在这部分你可以,通过一个例子,看到一个M-code function转变成为java可调用组件。
这个例子的名字叫,magic square,这个例子让你学会如何,创建一个叫magicsquare 的java组件,它主要包括一个 magic class,和一个jar文件,还有其它上些发布组件用到的文件。magic .class是最关键的,就是它包装了, MATLAB 的函数 makesqr, makesqr函数是计算魔方数组用的,后面我们就是java程序,调用这个函数。
MATLAB Builder JA,可以通过在matlab命令,deploytool 调出,在这之间,为了验证matlab已能得到你的java环境了,你可以用,getenv JAVA_HOME来验证一下,能返回你的JAVA_HOME就是正确的了。
这个例子的,m代码和java代码,matlab都帮我们写好了。你现在需要做的就是把它的代码拷贝你的工作空间中,它是例子在
matlabroot /toolbox/javabuilder/Examples/MagicSquareExample .
matlabroot就是matlab的安装目录。
❼ Java与MATLAB混合编程,如何处理之间图像传递
matlab是用java调用的。安装的时候可以看到它在它的目录里装了javamatlab程序接口很丰富,可以提供接口给各种编程语言进行混合编程matlab也可以连接各种硬件,操作机器运动,或者测量,或者输入视频等
❽ 如何实现Java和matlab的混合编程,用java做交互界面,调用matlab做计算有实例请发给我参考下,十分谢谢
部署好了就行了。环境部署网上都有。直接搜索Java与matlab混编就行。我也在做混编,部署完了,使用matlab中的deploytool将.m文件编译为class文件,就可以在Java中当成类的一个方法调用。实例发给你,你也参考不了什么。
❾ java matlab混合编程需要什么支持
matlab是用java调用的。安装的时候可以看到它在它的目录里装了java matlab程序接口很丰富,可以提供接口给各种编程语言进行混合编程 matlab也可以连接各种硬件,操作机器运动,或者测量,或者输入视频等
❿ 请问java调用matlab,jar包冲突怎么解决
Java和MATLAB混合编程,Java调用MATLAB代码