Итак, у меня есть двоичный файл, который я читаю с помощью python, и я проверяю результаты с помощью matlab.Struct.unpack двоичный файл как проблема uint16, чтение python меньше чисел, чем ожидалось
#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 выглядит точно так же, как и в matlab, за исключением того факта, что каждая строка начинается примерно на 2 часа пунктов раньше и заканчивается раньше, поэтому в конце каждой строки начинается новая строка. Удивительно, что данные не заканчиваются, хотя длина двоичных данных соответствует количеству элементов в массивах. Я потратил уже несколько дней на то, чтобы выяснить это, пожалуйста, помогите!
Почему вы используете 'struct' вместо' numpy.fromfile'? То, что вы делаете, это одна строка кода, использующая 'numpy.fromfile'. – TheBlackCat