gpt4 book ai didi

java - 在 Java 中使用 JMatio 导出非常大的矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 07:04:11 24 4
gpt4 key购买 nike

我需要将非常大的 3d 矩阵从 Java 导出到 Matlab。我编写了一个用于创建 3d 矩阵的类,该类对于小型矩阵非常有效,但对于大型矩阵则无法正常工作。代码如下:

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 

我能够将数据放入 double[][][] 数组中。

最佳答案

看来 dims[0]*dims[1]*dims[2] 对于整数来说太大了,它不能大于 2,147,483,647。否则整数无法存储索引。

关于java - 在 Java 中使用 JMatio 导出非常大的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21648843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com