2013-07-03 25 views
1

Я следующий код, написанный в Matlab:Еореп код MATLAB в Python

>>> fid = fopen('filename.bin', 'r', 'b') 
>>> %separated r and b 
>>> dim = fread(dim, 2, 'uint32'); 

, если я использую «эквивалент» кода в Python

>>> fid = open('filename.bin', 'rb') 
>>> dim = np.fromfile(fid, dtype=np.uint32) 

я получил другое значение тусклый, когда я используйте Python.

Кто-то знает, как открыть этот файл с разрешением, таким как Matlab (разделение «r» и «b») в Python?

Спасибо заранее,

Rhenan

ответ

7

От Matlab docs я узнать, что ваш третий параметр 'б' означает Big-Endian упорядоченности, не разрешение.

Скорее всего, Numpy использует порядок юниоров на вашей машине. Чтобы устранить эту проблему, попробуйте указать в явном виде упорядочения в Numpy (как это делается в Matlab):

>>> fid = open('filename.bin', 'rb') 
>>> dim = np.fromfile(fid, dtype='>u4') 

dtype строка означает Big-Endian («>»), целое число без знака («и»), 4 номер байта.

См. Также Data type objects (dtype) в справочнике Numpy.

+0

Большое спасибо! Вы спасли меня! –