java

位置:IT落伍者 >> java >> 浏览文章

在Java程序中调用Matlab函数


发布日期:2022年10月14日
 
在Java程序中调用Matlab函数
环境准备

机器上有Eclipse 和Matlab a

机器的环境变量设置

)JAVA_HOME (JDK的安装位置如C:\Program Files\Java\jdk

设置后重启matlab才能有效

用getenv JAVA_HOME在Matlab的命令窗口中试验看看得到的返回值正确方可说明其对Matlab生效了

)Classpath

添加matlabInstallRoot \toolbox\javabuilder\jar\javabuilderjar

)Path

添加%JAVA_HOME%/bin/javac

将matlab的m文件生成为jar

在matlab的command窗口输入deploytool会在右侧弹出一个新窗口(Deployment Tool)

在Deployment Tool中点击new按钮选择Matlab Builder for Java与Java Package新建一个工程名字如flyingprj

确保在Deployment Tool面板中的Generate Verbose Output被勾上了

将欲被java调用的m文件(如mydrawm其中包括两个参数(xy))从Matlab整个界面的左侧工作目录面板拖拽到Deployment Tool中的新建的类下面的class 文件夹下

点击build按钮则会在matlab的当前目录下生成以一个与工程同名的文件夹如果build成功会看到文件夹结构如下

Flying |distrib

| |flyingjar

| |flyingctf

|

|src

| |flying

| |flyingclassjava

| |flyingMCRjava

| |classes

| |flying

| |flyingclassclass

| | flyingMCRclass

|buildlog

|flyingctf

|flyingjar

|mccExcludedFileslog

|readmetxt

编写java方法准备调用刚刚生成好的flyingjar中的Matlab函数

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

matlabroot\toolbox\javabuilder\jar\javabuilderjar

TestDirectory\flyingjar

编写函数示例如下

package test;

/**

* test for a Matlab Call

*

*/

import commathworkstoolboxjavabuilder*;

import flying*;

public class testMatlabClass {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Autogenerated method stub

try {

Systemoutprintln(Begin

flyingclass flyingDraw=new flyingclass()

Systemoutprintln(Middle

flyingDrawmydraw(

Systemoutprintln(Here

}catch (Exception e){Systemoutprintln(e)}

}

}

如果不能正常运行可以考虑在 classpath 中加入 flyingjar 所在的位置

详 细

参见 matlab 的帮助文件

数据类型相关

Java 的数值型数组可以直接作为输入参数传递到 m 文件上

mydraw(xy) 可以画x=[ ] y=[ ]这样的线图Java调用该方法时候如果传递的参数是整型或者实数型数组则直接可成功如java中

int[] a = new int[];

int[] b = new int[];

// 给 ab 赋值 …

// …

// 调用

flyingclass flyingDraw = new flyingclass()

flyingDrawmydraw(ab)

注意ab 最好所有有索引的位置都有值否则如果没有充分赋值曲线可能会最终折回()点

Matlab程序(m文件)的修改

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

直接修改欲改动的m文件

打开Matlab 在Command输入Deploytool 在新打开的部署面板中打开该m文件所在的工程如flyingprj

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

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

               

上一篇:Linux下java的Swing/AWT程序乱码解决

下一篇:构建用于正则表达式的抽象Java API