关于Java调用Matlab程序

来源:互联网 发布:合并报表知乎 编辑:程序博客网 时间:2024/06/05 13:36

关于Java调用Matlab程序

 

一、基本步骤

  1. 编写M文件
  2. 生成Java调用包

Matlab命令中输入deploytool,新建一个Java Package工程,在其中可以新建类,在类中添加M文件,点击bulid,生成供Java调用的Jar包。添加到类中的M函数成为该类的成员函数。

注:需要在操作系统环境变量path中添加javac的位置。

尽量避免将工程放在中文目录下,否则build容易出现错误。

  1. 编写Java调用程序

调用类的函数时,第一个输入参数是返回值的个数,然后是原来的参数列表。返回值为Object[]类型。具体可参照第二步骤生成的文档。

 

 

二、注意事项:

Java调用与在Matlab命令窗口调用m函数结果有所不同。



三、示例:

Matlab程序:

function output = plotXY(x,y)
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
plot(x,y);
output=x+y;

end


Java程序:

import java.util.Scanner;

import PlotXY.*;
import com.mathworks.toolbox.javabuilder.*;

public class DrawPlot {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Plot xy=null;
Object[] result;
MWNumericArray resultX;
MWNumericArray x = null; /* Array of x values */
MWNumericArray y = null; /* Array of y values */
int n = 5;
Scanner sc = new Scanner(System.in);

try {
/* Allocate arrays for x and y values */
int[] dims = { 1, n };
x = MWNumericArray.newInstance(dims, MWClassID.DOUBLE,
MWComplexity.REAL);
y = MWNumericArray.newInstance(dims, MWClassID.DOUBLE,
MWComplexity.REAL);
System.out.println("Please Input X-Y: ");
/* Set values */
for (int i = 1; i <= n; i++) {
System.out.println("Input X-Y " + i + ": ");
x.set(i, sc.nextDouble());
y.set(i, sc.nextDouble());
}
xy = new Plot();

result = xy.plotXY(1 ,x , y);
resultX=(MWNumericArray)result[0];
System.out.println(result[0]);
for (int i = 1; i <= n; i++) {
System.out.println(resultX.getFloat(i));
}
xy.waitForFigures();

xy.dispose();

} catch (Exception e) {
e.printStackTrace();
} finally {
/* Free native resources */
MWArray.disposeArray(x);
MWArray.disposeArray(y);
if (xy != null)
xy.dispose();
}
}

}

 

原创粉丝点击