Как сохранить список словарей Python в виде массива структурированных массивов Matlab? - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь создать файл для чтения в среде Matlab.Структура в matlab выглядит следующим образом:

trx(1) = 
          x: [1×1500 double]
          y: [1×1500 double]
          a: [1×1500 double]
          b: [1×1500 double]
      theta: [1×1500 double]
 firstframe: 1
   endframe: 1500
    nframes: 1500
        off: 0 


 trx(2) = 
          x: [1×751 double]
          y: [1×751 double]
          a: [1×751 double]
          b: [1×751 double]
      theta: [1×751 double]
 firstframe: 750
   endframe: 1500
    nframes: 751
        off: -749 

Итак, я, естественно, создал словарь Python с необходимыми полями и создал список, а затем использовал savemat.Однако, когда я загружаюсь в Matlab, я получаю только массивы ячеек.Я также пытался использовать this , но проблема в том, что не все поля являются массивами одинаковых форм, например, firstframe - int.Тогда, когда я использовал fromarrays (), но он жалуется, потому что форма не совпадает.

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

1 Ответ

0 голосов
/ 08 февраля 2019

В октаве

M =

  scalar structure containing the fields:

    x =

       1   2   3   4

    y =

       5   6   7   8

    one =  1
    two =

       1   2

>> save -7 struct.mat M

В Ipython:

In [450]: dat = io.loadmat('struct.mat')
In [451]: dat
Out[451]: 
{'__header__': b'MATLAB 5.0 MAT-file, written by Octave 4.2.2, 2019-02-08 18:49:49 UTC',
 '__version__': '1.0',
 '__globals__': [],
 'M': array([[(array([[1., 2., 3., 4.]]), array([[5., 6., 7., 8.]]), array([[1.]]), array([[1., 2.]]))]],
       dtype=[('x', 'O'), ('y', 'O'), ('one', 'O'), ('two', 'O')])}

Здесь M - это (1,1) структурированный массив, со всеми полями object dtype.Таким образом, каждый из них может иметь свою собственную форму.Скаляр представляет собой (1,1) матрицу.

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