【问题标题】:Converting a MATLAB Javabuilder output object element to an array将 MATLAB Javabuilder 输出对象元素转换为数组
【发布时间】:2014-06-02 13:04:17
【问题描述】:

我已经接到了使用 MATLAB Builder 将 MATLAB 函数转换为 Java 类的任务,现在我已经到了将一个类的结果输入另一个类的地步,因为 MATLAB builder 只会输出一个对象,我遇到了问题。

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 类的输出是一个二维数组,所以该数组嵌入到 resultT[] 对象中,我如何访问这个数组?我尝试过的一种方法如上所述,将其更改为数组列表,X 输出数组,但我无法访问数组的组件。 X.size = 1,而不是 100,它是数组的实际大小。编辑 - 只是为了添加,我能找到的所有示例都只是输出结果对象并显示它,而不是用它做任何事情。

【问题讨论】:

    标签: java arrays matlab object javabuilders


    【解决方案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]);
                }
    

    其中 point 将 x 和 y 的值设置为一个数组,因此将其设置为一个新的 MWNumericArray 并执行 Object.get(i) 但这会使数组变平,这并不理想。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-27
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      相关资源
      最近更新 更多