Чтение данных Matlab в python с помощью scipy.io - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь прочитать некоторые экспериментальные условия из файла MATLAB 5.0, используя scipy.io. Проблема в том, что выходной файл представляет собой смехотворно сложную серию массивов. Как я могу отфильтровать данные в файле Matlab?

import scipy.io as sio
with open("sequence_output.txt", "w") as f:
    mat = sio.loadmat("seq_data.seq")
    f.write(str(mat))

Это дает мне что-то вроде ниже в выходном файле. (Фактический файл> 800 строк).

Как мне выбрать нужные данные из этого файла?

{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Thu Mar 15 13:50:48 2018', '__version__': '1.0', '__globals__': [], 'StepData': array([[(array([[1]], dtype=uint8), array(['LoadPlate'], dtype='<U9'), array([[1]], dtype=uint8), array([[1]], dtype=uint8), array([[0]], dtype=uint8), array([[0]], dtype=uint8), array([[(array([[12]], dtype=uint8), array([[8]], dtype=uint8), array([[0]], dtype=uint8), array([[1]], dtype=uint8), array([[60]], dtype=uint8), array([[1]], dtype=uint8), array([[1]], dtype=uint8), array([[(array([[1]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[1]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[1]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[1]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[1]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[1]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[1]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[1]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[0]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[0]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[0]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[0]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[0]], dtype=uint8), array([[0]], dtype=uint8)),
        (array([[0]], dtype=uint8), array([[0]], dtype=uint8)),

1 Ответ

0 голосов
/ 29 октября 2018

mat['StepData'] представляет собой двумерный массив, содержащий один строковый массив dtype и целый набор uint8 массивов (все они (1,1) массива). shape этого массива может быть (1, n), но отображение неполное. dtype равно object, поскольку оно содержит массивы в качестве элементов. Источник MATLAB, вероятно, был cell.

Я не могу скопировать и вставить ваш комментарий, чтобы расшифровать его, но он также выглядит как набор строковых массивов и uint8.

Матрицы MATLAB загружаются в виде числовых или строковых массивов. Они всегда будут 2d (или выше) и могут быть транспонированы (или order = 'F').

Ячейки MATLAB могут иметь сочетание содержимого (числовое, строковое и т. Д.) И загружаться как массивы dtype объектов.

MATLAB struct загружаются в виде структурированных массивов с именами полей, соответствующими структурам полей / атрибутов.

Поищите в [scipy] loadmat ', чтобы увидеть другие вопросы по использованию loadmat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...