Чтение .mat файлов из Java

1

Я использую jmatio для чтения в массиве 10000x3072 из файла Matlab (набор данных CIFAR10).

Вот что я имею до сих пор:

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

Любые идеи, как я могу напечатать массив на консоли?

Теги:
image-processing
arrays
multidimensional-array

2 ответа

0

Вы можете использовать MLArray для MLDouble, а затем использовать метод getArray(), который даст вам двойной [] []

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

изменить свой способ доступа

Подробности 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

  • 0
    Спасибо за ваш ответ! Что я должен изменить это? Я не могу использовать направление getIndex на MLArray (он защищен)
  • 0
    Что происходит, когда вы используете mlarrayretrieve.toString() вместо contentToString, это дает ошибку более 1000 элементов? И, пожалуйста, опубликуйте фактический вывод, который вы получите на своей консоли (ошибки, включая трассировку стека и номера строк и т. Д.)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню