将 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。
如何将 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。