- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JavaMaltab混合编程研究u
Java和matlab混合编程研究
摘要:为了能结合Java和Matlab两者的优点,构造功能更加强大的科学计算环境,对如何进行Java和Matlab混合编程进行了研究,首先介绍了Java调用Matlab函数的基本方法,在此基础上结合工程上的实际应用,解决了材料力学中三向应力的求解问题。
关键词:Java ;Matlab;三向应力
引言
M a t l a b是美国M a t h W o r k s公司推出的一款可视化的数值计算软件,是目前学术界和工程界最为流行的科学计算工具,具有强大的数值计算,矩阵计算,信号处理和图形图像处理功能。不过Matlab虽然功能强大,但界面开发能力较差,并且其程序不能脱离Matlab环境独立运行。
Java是一种可靠稳定、跨平台、面向对象的语言。其语言本身的安全性很高并引入了一些日益重要的复杂任务,比如多线程和网络编程,这些工作用java实现起来轻而易举。然而,Java在数据分析和处理方面的能力却不那么突出,尤其是在对数组矩阵之类的数据进行操作时会因为多次循环而速度变得缓慢,这在数组或矩阵位数很大时缺点尤为突出[1]。
如果用Matlab和java混合编程开发Windows的应用程序则可以实现优势互补,缩短开发时间,降低程序设计的复杂度。同时程序可以脱离Matlab环境独立运行,在工程计算和教学实践中都具有实际意义。
使用java调用Maltab函数的基本方法
使用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
您可能关注的文档
最近下载
- 安徽省合肥市第四十六中学2024-2025学年八年级下学期期中考试数学卷[含答案].pdf VIP
- 《教师安全培训》ppt课件完整版.pptx VIP
- 蒂森823扶梯图纸.pdf VIP
- GB50169-2016 电气装置安装工程接地装置施工及验收规范附条文.docx VIP
- 字典电子版.doc VIP
- 铁总工电〔2018〕125号普速铁路桥隧建筑物修理规则.docx VIP
- 男性私密项目培训.pptx
- 宁波市2025年小学生科普知识学习体验活动-高段组(参考答案) .pdf VIP
- 安徽省合肥市2024-2025学年八年级下学期期中教学质量检测数学试卷(含详解).pdf VIP
- 2024届山东潍坊高三高考模拟训练物理卷 .pdf VIP
文档评论(0)