Мне было поручено использовать MATLAB Builder для преобразования функции MATLAB в класс Java, теперь я дошел до точки, когда у меня есть результаты от одного класса, который подается в другой, и поскольку построитель MATLAB будет выводить только объект, У меня проблемы.
import java.util.*;
import com.mathworks.toolbox.javabuilder.*;
public class mainKrigTau {
public static void main(String[] args) {
Object[] resultT = null;
Object[] resultK = null;
Object[] resultB = null;
krigingTau Tau = null;
krigingTau Krig = null;
Branin branin = null;
try {
Tau = new krigingTau();
Krig = new krigingTau();
branin = new Branin();
resultT = Tau.LPtau(1, 100, 2, 1234);
List<Object> X = Arrays.asList(resultT[0]);
System.out.println(X);
System.out.println((X.size()));
} catch (MWException e)
{
e.printStackTrace();
} finally
{
}
Таким образом, в основном выход класса Tau представляет собой 2D-массив, поэтому массив встроен в объект resultT [], как мне получить доступ к этому массиву? Один из методов, которые я пробовал, как указано выше, меняет его на список массивов, X выводит массив, но я не могу получить доступ к компонентам массива. X.size = 1, а не 100, который является фактическим размером массива. edit - просто для добавления, все примеры, которые я могу найти, просто выводят объект результата и отображают его, а не делают что-либо с ним.
Хорошо, что на помощь пришел инженер-программист. Это немного окольный путь, но он работает.
try {
Tau = new krigingTau();
Krig = new krigingTau();
branin = new Branin();
resultT = Tau.LPtau(1, 100, 2, 1234);
List<Object> X = Arrays.asList(resultT[0]);
if (X.get(0) instanceof MWNumericArray) {
MWNumericArray mw= (MWNumericArray) X.get(0);
ArrayList<Point> lists = new ArrayList<Point>();
for(int i = 1; i <= mw.numberOfElements()/2; i++){
Object o = mw.get(i);
System.out.println(o);
Double x = (Double) mw.get(i);
Double y = (Double) mw.get((mw.numberOfElements()/2)+i);
Point p = new Point(x.doubleValue(),y.doubleValue());
lists.add(p);
}
for(int i = 1; i < mw.numberOfElements()/2; i++)
{
resultB = branin.branin(1, lists.get(i).array);
System.out.println(resultB[0]);
}
где точка устанавливает значения x и y в массив, поэтому установите его в новый MWNumericArray и выполните Object.get(i), но это сглаживает массив, который не идеален.