Matlab->Python,如何将二进制文件转换为1d浮点数组?在Matlab中运行良好,但无法在Python中



在Matlab中,二进制文件部分"块"为2048字节,读取方式如下:

fseek(fileID, 2024, 'bof');
data = fread(fileID, block, '*float');

数据输出为2048x1单精度阵列,示例如下。。。

15.5567
-1.9876
0.0529
25.97620

在Python中,我确保查找文件的同一部分,并使用2048字节的"块"读取二进制部分。然后,我尝试使用structunpack函数将二进制转换为单精度浮点数。

fileID.seek(2024,0)
data = unpack('2048f',block)

首先,我得到字节对象长度的错误。所以我改变了大小,看看输出是否会给我类似的东西。

data = unpack('512f',block)
print(data)

输出给出非常小和更大的数字

-14.858826637268066
5.938749347655264e-36
1.767982006072998
-24509016064.0

感谢您的帮助。我还试着使用

data = numpy.frombuffer(block, dtype=numpy.float32)

结果基本相同。

这是我找到的答案。工作非常完美。

data = []
for i in range(0, 2048): 
data.append(unpack('>f', fileID.read(4))[0]

数据的输出与Matlab完全相同。

最新更新