【发布时间】:2011-06-18 00:24:57
【问题描述】:
我正在将一些代码从 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
然后,我的 C++ 程序输出“92”,而我的 Matlab 代码输出 180。值开始发散:
C++ / MATLAB
92 / 180
58 / 118
230 / 219
60 / 133
继续继续,不匹配其余 512 个字节。
关于什么可能导致这种情况的任何想法?
【问题讨论】:
-
初步想法:您没有为 C++ 中的数组分配足够的内存,并且正在溢出。考虑一个可以为您自动调整大小的体面的标准容器。
-
...“q1”是如何打印的? Source 对定义和打印算法都有帮助。
-
uint8_t 是 typdef'd 作为字符,我不知道该怎么做,而 q1 是一个二维数组,有超过 1000 列和行。我应该发布更多资源,不幸的是我周末不在办公室。如果有人对发生的事情有任何猜测,仍然非常感谢。