c# - 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 我也尝试过,但是没有用。任何想法为什么价值观不同?
解决方案
您必须在初始化阅读器时将lazy
参数设置为。false
var reader = new MatReader(new BinaryReader(new FileStream("file.mat", FileMode.Open)), false, false);
推荐阅读
- jquery - 如何使用 JQuery 将按钮值从部分视图传递到父视图?
- python - 一个类如何生成一个回调函数,它会根据类属性而改变?
- c# - C#:按钮在面板中不起作用
- java - 为动态 DFA 编写代码时如何表示转换?
- javascript - React:如何像 iOS 应用商店一样进行过渡?
- angular - 错误:意外的值“AngularFireAuth”。由模块“AppModule”导入
- scala - 编写一个 Scala 函数来查找两个文件之间共享最多的单词
- node-red - Node RED:如何使用文件节点将数据保存到本地 csv 文件并访问它?
- reactjs - 在渲染部分之外调用函数
- reactjs - 如何使用 sprite SVG 图标文件方法在 Gatsby.js 中导入图标?