【发布时间】:2015-10-24 15:17:36
【问题描述】:
我是 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写了下面的程序:
fid = open(filename, 'r')
fid.seek(0 , 0)
meta = np.zeros((n,9),dtype = np.float32)
v = np.zeros((n,128),dtype = np.float32)
for i in range(n):
data_str = fid.read(9);
meta[1,:] = unpack('f', data_str)
对于这个解包,我得到的错误是
"解包需要长度为 4 的字符串参数"
。 请提出一些使其工作的方法。
【问题讨论】:
-
你应该看看这个帖子:stackoverflow.com/questions/3162191/…。不一定很难,但对于两种语言的初学者来说都是一个挑战。