首页 > 解决方案 > Accord .Net 读取 .mat 文件错误的数据类型或值

问题描述

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

我知道 Matlab 中的 double 在 c# 中应该是 Single 我也尝试过,但是没有用。任何想法为什么价值观不同?

标签: c#matlabaccord.net

解决方案


您必须在初始化阅读器时将lazy参数设置为。false

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

推荐阅读