读取原始数据文件,在Matlab和C ++中获取不同的值

时间:2011-06-18 00:24:57

标签: c++ c matlab

我正在将一些代码从Matlab(我不熟悉)转换为C ++。部分代码读入原始数据文件,并将每8位输入到矩阵的元素中。

MATLAB:

header=fread(fid, 512, '*uint8');

同样,在C ++中我有:

fread(&q1[0][0], sizeof(uint8_t), 512, filepath);

当然,它们都在读同一个文件,它们吐出的值匹配到元素#33。

10
0
0
0
244
1
0
0
10
0
0
0
244
1
0
0
10
0
0
0
244
1
0
0
10
0
0
0
208
7
0
0

然后,当我的Matlab代码吐出180时,我的C ++程序吐出“92”。值开始分歧:

C++ / MATLAB
92 / 180
58 / 118
230 / 219
60 / 133

并继续进行而不匹配512字节的其余部分。

关于可能导致这种情况的任何想法?

2 个答案:

答案 0 :(得分:1)

您是否使用二进制文件的'b'选项在C ++中打开文件?默认为't',文本模式,它将以不同的方式排列换行符/回车符。

编辑:假设这是Windows。如果不是Windows,那么你可以忽略它。

答案 1 :(得分:0)

事实证明,Matlab正在预处理我发送的原始文件,这改变了标题。虽然文件是“副本”(就Windows而言),但它们的标题不同,在打印出原始数据的开头时给出了不同的值。