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