将 Matlab Runtime 中的 Object[] 结果转换为 double[][] 数组 Java

Convert Object[] result in Matlab Runtime to double[][] array Java

如何将 Matlab Runtime 中的 Object[] 结果转换为 double[][] 数组 Java? 我试过 "toDoubleArray" 这样的:

MWNumericArray data1=null;
        MWNumericArray data2=null;
        Object[] result = null;
        Class1 lse = null;
        Object[] hasil;
        try {
            data1=new MWNumericArray(A, MWClassID.DOUBLE);
            data2=new MWNumericArray(target, MWClassID.DOUBLE);
            lse = new Class1();
            result = lse.rekursif_lse(1, data1,data2);
            System.out.println(" "+result[0]);
            MWNumericArray mytemp = (MWNumericArray) result[0];
            double[][] bar =(double[][]) mytemp.toDoubleArray();
            T = bar;
            for(i=0;i<=20;i++){
            for(j=0;j<2;j++){
                System.out.println(" "+T[i][j]);
            }
        }
        }catch (Exception e) {
        System.out.println("Exception! "+e.toString());}
        finally
        {
         MWArray.disposeArray(data1);
         MWArray.disposeArray(data2);
         MWArray.disposeArray(result);
         lse.dispose();
        }

但输出是:

**> In rekursif_lse (line 11)

1.0e+45 *

-0.2047

-0.7003

-0.2422

0.4113

-5.6423

4.5718

-1.6527

3.5924

6.5032

-5.7239

0.2034

0.6966

0.2437

-0.4095

5.6115

-4.5425

1.6626

-3.5839

-6.4737

5.4594

2.0467650070969492E44

Exception! java.lang.ArrayIndexOutOfBoundsException: 1

可以看出 Matlab Compiler Runtime 可以运行,但我无法将 "result" 输入到 "T" which:

double T[][]=new double[20][1];

我该如何解决这个问题?

您混淆了数组索引:您有一个带有测量值 [20][1] 的二维数组,但在打印循环中您输入了:

 for(i=0;i<=20;i++){
     for(j=0;j<2;j++){
          System.out.println(" "+T[i][j]);
     }
 }

这意味着您正在遍历维度数组 [20][2]。为了不超出数组的维度,只需删除 J:

的 for 循环
for(i=0;i<=20;i++){
    System.out.println(" "+T[i][0]);
}

因为二维数组实际上是一维的,包含20个元素——第二个坐标永远是0。