我正在尝试将Matlab脚本转换为Python。该脚本读取一个二进制文件并将其重新整形成多列。
Matlab脚本如下:
fid=fopen(binary_file,'rb');
[inpar,ic]=fread(fid,4,'int');
if (ic<4) ; idata=[];return;end
nmagic=inpar(1);
nh=inpar(2);
nrpar=inpar(3);
nipar=inpar(4);
[rdata,ic]=fread(binary_file,[nh,nrpar],'float');
if (ic<nh*nrpar) ; return;end
[idata,ic]=fread(fid,[nh,nipar],'int');
if (ic<nh*nipar) ; return;end
我尝试的Python代码是:
import numpy as np
inpar = np.fromfile(fid, dtype=np.int32)
nmagic, nh, nrpar, nipar = inpar
rdata = np.fromfile(fid, dtype=np.float32, count=nh * nrpar).reshape(nh, nrpar)
idata = np.fromfile(fid, dtype=np.int32, count=nh * nipar).reshape(nh, nipar)
我不确定Matlab是如何重塑数据的。有没有人可以帮我将代码翻译成Python以达到相同的结果。这里提供了一个样本数据here。