Matlab到Python转换二进制文件读取

2024-05-03 12:38:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Matlab和Python都是新手,我必须把Matlab中的程序转换成Python。我不知道在从Python文件中读取数据后如何对数据进行类型转换。使用的文件是二进制文件。在

以下是Matlab代码:

fid = fopen (filename, 'r');
 fseek (fid, 0, -1);
 meta = zeros (n, 9, 'single');
 v = zeros (n, 128, 'single');
 d = 0;
 for i = 1:n
   meta(i,:) = fread (fid, 9, 'float');
   d = fread (fid, 1, 'int');
   v(i,:) = fread (fid, d, 'uint8=>single');
 end

我用python编写了以下程序:

^{pr2}$

对于这个解包,我得到的错误是

"unpack requires a string argument of length 4"

一。 请给我个建议,让它发挥作用。在


Tags: 文件数据代码二进制zeros读取数据filenamemeta
1条回答
网友
1楼 · 发布于 2024-05-03 12:38:12

我看了一下这个问题,主要是因为我在不久的将来也需要这个。结果是有一个使用numpy的非常简单的解决方案,假设你像我一样存储了一个matlab矩阵。在

import numpy as np

def read_matrix(file_name):
    return np.fromfile(file_name, dtype='<f')  # little-endian single precision float

arr = read_matrix(file_path)

print arr[0:10]  #sample data
print len(arr)  # number of elements

您必须自己找出数据类型(dtype)。这方面的帮助是here。我使用fwrite(fid,value,'single');在matlab中存储数据,如果你有相同的,上面的代码就可以工作了。 注意,返回的变量是一个列表;您必须格式化它以匹配数据的原始形状,在我的例子中,len(arr)是来自15360x20的矩阵的307200。在

相关问题 更多 >