Преобразование элемента выходного объекта MATLAB Javabuilder в массив

1

Мне было поручено использовать 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 - просто для добавления, все примеры, которые я могу найти, просто выводят объект результата и отображают его, а не делают что-либо с ним.

Теги:
object
arrays

1 ответ

1
Лучший ответ

Хорошо, что на помощь пришел инженер-программист. Это немного окольный путь, но он работает.

    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), но это сглаживает массив, который не идеален.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню