Я хочу реализовать алгоритмы SVD, PCA и LDA, используя java и matlab.Я извлекаю данные и формирую двумерную матрицу с использованием Java, которую затем хочу передать в функции 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
Теперь я вызываю функцию matlab из java как -
proxy.feval("svd1",(Object) A);
Это нормально работает, когда я передаю одномерный массив, но не работает в случае двумерных массивов.
Любые указатели о том, как передать двумерный массив из Java в Matlab и как получитьРезультаты обратно будут действительно полезны.