Accord .Net Читайте .mat файл неверный тип данных или значение - PullRequest
0 голосов
/ 08 июня 2018

Я использую библиотеку Accord .Net c # для чтения файла .mat:

        string fileName = Path.Combine("MYLOCALPATH", "training_f_r1_1.mat");
        FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
        Debug.WriteLine(fileName);
        var reader = new MatReader(fStream);

        var node = reader["training_f_r1_1"];
        double[,] value = node.Value as double[,];
        Debug.WriteLine("*****");
        Debug.WriteLine(value[0,0]);
        Debug.WriteLine(value[0,1]);
        Debug.WriteLine(value[0,2]);
        Debug.WriteLine("*****");

Мой файл matlab ".mat" представляет собой двойную матрицу и имеет значения:

33.338652248163450, 0.447357298679056, 5.207437835743190
               ...,               ...,               ...

Но приведенный выше код дает мне:

    3500.4784339099424, -1.6283030973451347E+138, 2.4840536969417093E-208

Я знаю, что double в Matlab должен быть Single в c # Я тоже пробовал, но это не сработало.Есть идеи, почему значения разные?

1 Ответ

0 голосов
/ 16 июля 2018

При запуске считывателя необходимо установить для параметра lazy значение false.

var reader = new MatReader(new BinaryReader(new FileStream("file.mat", FileMode.Open)), false, false);
...