从Java读取.mat文件

从Java读取.mat文件,java,arrays,matlab,image-processing,multidimensional-array,Java,Arrays,Matlab,Image Processing,Multidimensional Array,我正在使用jmatio从Matlab文件(CIFAR10数据集)读取10000x3072数组 以下是我到目前为止的情况: import com.jmatio.io.*; import com.jmatio.types.*; public class Driver { public static void main(String[] args) throws FileNotFoundException, IOException { MatFileReader matfilere

我正在使用jmatio从Matlab文件(CIFAR10数据集)读取10000x3072数组

以下是我到目前为止的情况:

import com.jmatio.io.*;
import com.jmatio.types.*;

public class Driver {

   public static void main(String[] args) throws FileNotFoundException, IOException {

    MatFileReader matfilereader = new MatFileReader("test_batch.mat");
    MLArray mlArrayRetrieved = matfilereader.getMLArray("data");
    System.out.println(mlArrayRetrieved);
    System.out.println(mlArrayRetrieved.contentToString());
  }
}
这是我的输出:

数据=无法显示元素数超过1000的变量

我尝试遍历MLArray,但出现以下错误:

Can only iterate over an array or an instance of java.lang.Iterable

您知道如何将阵列打印到控制台吗?

更改您的访问方式

MLArray详细信息:

关于mlarray是如何实现的,请查看此内容,然后派生您的访问方法:

您可以将MLArray强制转换为MLDouble,然后使用getArray()方法,该方法将为您提供一个double[][]

MatFileReader matfilereader = new MatFileReader("test_batch.mat");
double[][] mlArrayDouble = ((MLDouble) matfilereader.getMLArray("data")).getArray(); 

谢谢你的回复!我应该把它改成什么?我无法在MLArray(受保护)上使用getIndex direction当您使用
mlarrayretrieve.toString()
而不是ContentString时会发生什么情况,它会给出超过1000个元素的错误吗?请在你的控制台上发布你得到的实际输出(错误包括stacktrace和行号等),我在数据集的一小部分上使用了上面的代码,它工作得很好。最后,我将所有数据从matlab转换成csv格式,并将其传递到Java(更容易)。谢谢你的反馈!