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