我正在使用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我也尝试了但是它没有用。任何想法为什么价值观不同?
答案 0 :(得分:0)
初始化阅读器时,必须将lazy
参数设置为false
。
var reader = new MatReader(new BinaryReader(new FileStream("file.mat", FileMode.Open)), false, false);