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

标签 java arrays matlab matlab-deployment

如何将 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 可以正常工作,但我无法将“结果”输入到“T”,其中:

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。

关于java - 将 Object[] 结果在 Matlab Runtime 中转换为 double[][] 数组 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45878141/

相关文章:

PHP:防止重复嵌套foreach多维数组

matlab - 关于 ndarrays 的形状不可知切片

java - facescontext.getcurrentinstance 返回 nullpointerexception

Java - 生成长度为x的字符串

java - 如何用Servlet初始化JSP页面?

MySql - 使用同一表的某些字段的值更新表的某些字段

java - openFileOutput 抛出异常

javascript - 按日期和时间升序对数组进行排序

matlab spectrum 返回比预期更多的 FRAME

matlab - 有没有办法在矩阵 repmat 数组上执行 mpower?