1
我需要从Java中将非常大的3d矩阵导出到Matlab。我已经写了一个创建一个3d矩阵的类,它对于小矩阵非常有效,但对于大矩阵来说却是失败的。代码如下:在Java中使用JMatio导出非常大的矩阵
public class MLDouble3d extends MLDouble {
private final int i;
private final int j;
public MLDouble3d(String name, int[] dims) {
super(name, dims);
i=dims[0];
j=dims[1];
}
public void set(double value, int ii, int jj, int kk){
set(value, ii + jj * i + kk * i * j);
}
}
我收到以下错误,当我用大矩阵运行:
Exception in thread "main" java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:236)
at com.jmatio.types.MLNumericArray._set(MLNumericArray.java:269)
at com.jmatio.types.MLNumericArray.setReal(MLNumericArray.java:111)
at com.jmatio.types.MLNumericArray.set(MLNumericArray.java:215)
我使用MLSparse试过了,但是它不能用于创建3D矩阵这条路。
我用下列选项运行虚拟机:
-Xms24000M -Xmx24000M -Xmn16000M -XX:TLABSize=1m -XX:-ResizeTLAB
我能够适合在一个双[] [] []数组中的数据。
有没有办法解决它?比如像将整数改为long,例如?或者也许是一个不同的库? –
我会将Java'double [] [] []'存储在使用任何java库(例如hibernate,xml等)的文件中,并通过java将其加载到matlab中。 Java-Code可以直接从matlab命令行执行。 – Daniel