1

我有以下用 Matlab 编写的代码:

>>> fid = fopen('filename.bin', 'r', 'b')
>>> %separated r and b
>>> dim = fread(dim, 2, 'uint32');

如果我在 Python 中使用“等效”代码

>>> fid = open('filename.bin', 'rb')  
>>> dim = np.fromfile(fid, dtype=np.uint32)

当我使用 Python 时,我得到了不同的 dim 值。

有人知道如何在 Python 中使用 Matlab('r' 和 'b' 分隔)这样的权限打开这个文件吗?

提前致谢,

雷南

4

1 回答 1

8

Matlab 文档中,我了解到您的第三个参数“b”代表 Big-Endian 排序,不是许可。

Numpy 很可能在您的机器上使用 little-endian 顺序。要解决此问题,请尝试在 Numpy 中明确指定排序(就像在 Matlab 中所做的那样):

>>> fid = open('filename.bin', 'rb')
>>> dim = np.fromfile(fid, dtype='>u4')

dtype字符串代表 Big-Endian ('>')、无符号整数 ('u')、4 字节数字。

另请参阅Numpy 参考中的数据类型对象 (dtype)

于 2013-07-03T22:09:28.480 回答