我想使用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以及如何获取结果的任何指针将非常有帮助。