как создать вектор Matlab внутри массива ячеек, используя savemat от scipy - PullRequest
0 голосов
/ 09 октября 2019

В python я пытаюсь использовать метод savemat SciPy для создания массива ячеек, который содержит вектор с плавающей точкой. Я пробовал следующее: (также пробовал списки и другие типы массивов np)

vector = np.array([2.3,66.7,22.0])
cell = np.array(vector,dtype=np.object)
io.savemat({'result':cell})

Однако это дает мне следующий вывод в MATLAB

result =

  1×3 cell array

    {[2.3000]}    {[66.7000]}    {[22]}

, но мне нужноследующее {[2.3,66.7,22]}, ничего из того, что я пробовал, пока не работает. Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 09 октября 2019
In [25]: from scipy import io                                                   
In [26]: cell = np.array(np.array([1,2,3]), object)                             
In [27]: cell                                                                   
Out[27]: array([1, 2, 3], dtype=object)
In [28]: io.savemat('test.mat', {'result':cell})                                
In [29]: io.loadmat('test.mat')                                                 
Out[29]: 
{'__header__': b'MATLAB 5.0 MAT-file Platform: posix, Created on: Wed Oct  9 09:16:37 2019',
 '__version__': '1.0',
 '__globals__': [],
 'result': array([[array([[1]]), array([[2]]), array([[3]])]], dtype=object)}

Итак, как в исходном cell, так и в загрузке у нас есть массив из 3 элементов, каждый из которых представляет собой число, или массив 2d.

Давайте создадим массив из одного элемента,с этим элементом является сам массив:

In [30]: cell = np.empty((1,1),object)                                          
In [31]: cell                                                                   
Out[31]: array([[None]], dtype=object)
In [32]: cell[0,0] = np.array([1,2,3])                                          
In [33]: cell                                                                   
Out[33]: array([[array([1, 2, 3])]], dtype=object)
In [34]: io.savemat('test.mat', {'result':cell})                                
In [35]: io.loadmat('test.mat')                                                 
Out[35]: 
{'__header__': b'MATLAB 5.0 MAT-file Platform: posix, Created on: Wed Oct  9 09:18:55 2019',
 '__version__': '1.0',
 '__globals__': [],
 'result': array([[array([[1, 2, 3]])]], dtype=object)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...