LINUX.ORG.RU

Портирование matlab-кода на python (частичное соответствие результатов)

 , , ,


1

2

Есть несколько bin-файлов с сэмплами от осциллографа Agilent, файлы сохранены в формате осциллографа. По наследству достался код на MATLAB, который читает эти файлы так:

function FileReadTest
   file_name = '/path/to/file'
   m = memmapfile(file_name,'Format','single','Offset',164);
   disp(file_name)
   double(m.Data(1:10))
end

Что, кажется, соответствует оригинальным рекомендациям.

Мне необходимо читать эти же файлы в Python, «портировал» функцию следующим образом:

import numpy as np

file_name = '/path/to/file'

with open(file_name, 'r') as file:
    file.seek(164)
    print file_name
    print np.fromfile(file, np.float32, count=10)

А теперь начинаю вручную сравнивать результаты на разных bin-файлах и... где-то совпадает, а где-то нет! И это, как-то вгоняет в ступор, если бы результаты всегда расходились, было бы ясно. Кто подскажет?

file.seek

не думаю что я смогу помочь, т.к не силен в матлабе и осцилографах, но точно не file.read ?

хотя в целом, конечно, ничего не должно измениться

Dred ★★★★★ ()
Последнее исправление: Dred (всего исправлений: 1)
Ответ на: комментарий от Dred

В питоне по всей видимости тоже.

Ему надо не прочитать, ему надо проигнорировать хэдер: 'Offset',164.

aedeph_ ★★ ()
Ответ на: комментарий от aedeph_

эмм, read тащем-то тоже каретку переставляет.

заодно можно попробовать r на rb сменить, рас уж оно бинарное

Dred ★★★★★ ()
Последнее исправление: Dred (всего исправлений: 1)

Портирование matlab-кода на python

Моделируешь движение пищи по пищеводу?

anonymous ()
Ответ на: комментарий от Dred

Благодарю за наводку на 'b', судя по документации:

Append 'b' to the mode to open the file in binary mode, on systems that differentiate between binary and text files; on systems that don’t have this distinction, adding the 'b' has no effect.

наверное, на Linux значения не имеет? Хотя на всякий случай заметка полезная.

По сабжу - прошу прощения, не доглядел - оба фрагмента работают одинаково. Чёрт попутал, почему я решил, что они работают по-разному.

omegatype ★★ ()

Numpy тоже умеет с mmap работать. Я бы в эту сторону копал, если надо «оригинальным рекомендациям» соответствовать.

ei-grad ★★★★★ ()

Портируй на октаву! Зачем тебе этот говнопхытон?

anonymous ()
Ответ на: комментарий от ei-grad

Откровенно говоря, мне совершенно непонятно, зачем в оригинальном коде memmapfile? Всё содержимое файла всё-равно выгружается полностью через свойство Data :/

omegatype ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.