从Java读取.mat文件



我正在使用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());
  }
}

这是我的输出:

data=不能显示元素超过1000的变量。

我尝试迭代MLArray,但我得到了以下错误:

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

有什么想法可以将数组打印到控制台吗?

更改访问的方式

MLArray详细信息:http://intra.csb.ethz.ch/javadoc/metabolic/com/jmatio/io/MatFileReader.html#getMLArray(java.lang.String)

也可以看看mlarray是如何实现的,然后派生您的访问方法:http://intra.csb.ethz.ch/javadoc/metabolic/src-html/com/jmatio/types/MLArray.html#line.306

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

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

相关内容

  • 没有找到相关文章

最新更新