好的,我有一个二进制文件,我正在用python读取,并用matlab检查结果。在
#Constants
RecordsPerBuffer = 10
RecordLength = 9920
Records = 1000
Channels = 2
SamplesPerAline = Channels*RecordLength*RecordsPerBuffer
AlinesPerBscan = Records/RecordsPerBuffer
onearm='RawSpectraBgn.dat'
with open(onearm, "rb") as f:
fileContent = f.read()
print(type(fileContent)), "FileContentType"
print(len(fileContent)), "FileContentLenght", len(fileContent)*1./10
for j in range (0, AlinesPerBscan):
for i in range (0, SamplesPerAline):
back[i,j]=struct.unpack_from('!H',fileContent[(j*SamplesPerAline+i*2):(j*SamplesPerAline+i*2+2)])[0]
#print back.shape
所以我有一个包含AlinesPerBscan行和AlinesPerBscan列的数组,并用python和matlab绘制行。在matlab中,每一行看起来都是一样的,python中的plot看起来与matlab中的完全相同,只是每一行开始的时间早于200个点,因此在每一行的末尾都有一个新行的开始。令人惊讶的是,即使二进制数据长度与数组中元素的数量一致,数据也不会结束。我已经花了几天时间想弄清楚,请帮忙!在
您正在增加
j
的记录数,而不是这些记录的总大小。假设性能不是问题,那么按需读取这两个字节要比亲自模拟文件指针要清楚得多。在尽管
f.read(2)
只返回两个字节,但是有许多缓冲区会阻止您每次调用实际访问一次文件系统。在相关问题 更多 >
编程相关推荐