Matlib是强大的数学计算工具,可以在Java中调用Matlib的函数。
例如,在Matlib中定义函数:
function y = MainFunction_d(parain)
函数MainFunction_d接收参数parain,有返回值y。
在java中如何在调用时传输参数并获得返回值呢?
mainfunction mf = new mainfunction();
//mainfunction时Matlib编译.m文件生成的java对象,这里构造java对象,可以调用到matlib的函数
String[] in = {"……"};
Object[] out = new Object[1];
mf.MainFunction_d(out, in);
//这里In代表输入参数,out代表函数的返回值,这样就可以拿到Matlib的函数的结果了
matlib中有一种特有的类型,cell数组,他是二维数组,数组中的每个元素都是一个cell数组,是不限递归的,这样可以表示很复杂的数据结构。Java中没有对应的数据结构,需要用下面的方式获得其数据:
MWNumericArray ma = (MWNumericArray) out[0];
ArrayList<double[]> result = new ArrayList<double[]>();
Object[] array = ma.toArray(); //转换为一维数组
for(Object aa : array){
double[] a = (double[])aa; //每个数组元素double数组
result.add(a);
}
最后,结果转换为ArrayList<double[]> result
例如,在Matlib中定义函数:
function y = MainFunction_d(parain)
函数MainFunction_d接收参数parain,有返回值y。
在java中如何在调用时传输参数并获得返回值呢?
mainfunction mf = new mainfunction();
//mainfunction时Matlib编译.m文件生成的java对象,这里构造java对象,可以调用到matlib的函数
String[] in = {"……"};
Object[] out = new Object[1];
mf.MainFunction_d(out, in);
//这里In代表输入参数,out代表函数的返回值,这样就可以拿到Matlib的函数的结果了
matlib中有一种特有的类型,cell数组,他是二维数组,数组中的每个元素都是一个cell数组,是不限递归的,这样可以表示很复杂的数据结构。Java中没有对应的数据结构,需要用下面的方式获得其数据:
MWNumericArray ma = (MWNumericArray) out[0];
ArrayList<double[]> result = new ArrayList<double[]>();
Object[] array = ma.toArray(); //转换为一维数组
for(Object aa : array){
double[] a = (double[])aa; //每个数组元素double数组
result.add(a);
}
最后,结果转换为ArrayList<double[]> result