首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中使用JMatio导出非常大的矩阵

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

Stack Overflow用户
提问于 2014-02-09 00:50:49
回答 1查看 512关注 0票数 1

我需要将非常大的3d矩阵从Java导出到Matlab。我已经写了一个创建3d矩阵的类,它对于小矩阵工作得很好,但对于大矩阵就不行了。代码如下:

代码语言:javascript
复制
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);
    }
}

当我运行一个大型矩阵时,我得到了以下错误:

代码语言:javascript
复制
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矩阵。

我使用以下选项运行虚拟机:

代码语言:javascript
复制
-Xms24000M -Xmx24000M -Xmn16000M -XX:TLABSize=1m -XX:-ResizeTLAB 

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

EN

回答 1

Stack Overflow用户

发布于 2014-02-09 02:03:30

似乎dims*dims1*dims2对于整数来说太大了,它不能大于2,147,483,647。否则,整数不能存储索引。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21648843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档