如何使用JMI包将2d数组从Java传递到matlab(R2018b),并将结果从matlab返回到Java?

时间:2018-10-19 19:29:58

标签: java matlab

我想使用Java和Matlab实现SVD,PCA和LDA算法。我正在使用Java提取数据并形成2-D矩阵,然后将其传递给matlab的svd,pca函数。但是,我在matlab中遇到错误,因为“第一个输入必须是单个或两倍。”

我正在建立java-matlab通信为(使用JMI包)-

 MatlabProxyFactory factory = new MatlabProxyFactory();
 MatlabProxy proxy = factory.getProxy();
 String path ="cd(Matlab path)";
 proxy.eval(path);

例如,我的二维数组就是这样创建的-

double [][] A = new double[][] {{1.0,2.0,3.0},{4.0,5.0,6.0},{7.0,8.0,9.0}};

我的matlab函数写为-

function svd1(A) 
    [U,S,V] = svd(A); 
end

现在,我正在从java中调用matlab函数-

proxy.feval("svd1",(Object) A);

当我传递一维数组时效果很好,但是在二维数组的情况下失败。

关于如何将二维数组从Java传递到matlab以及如何获取结果的任何指针将非常有帮助。

0 个答案:

没有答案