cómo crear un vector de MATLAB dentro de una matriz de células usando savemat de scipy

votos
0

En Python Estoy tratando de utilizar el método de savemat SciPy para crear una serie de células que contiene un vector de flotadores. He intentado lo siguiente: (también han intentado listas y otros tipos de matrices NP)

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

Sin embargo, esto me da el siguiente resultado en MATLAB

resultado =

array 1 × 3 celular

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

pero lo que necesito es el siguiente {[2.3,66.7,22]}, nada de lo que he probado hasta ahora funciona. Cualquier ayuda sería muy apreciada

Publicado el 09/10/2019 a las 18:52
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0
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)}

Así, en tanto el original celly la carga, tenemos una matriz de 3 elementos, con cada elemento es un número, o una matriz 2D.

Vamos a hacer un solo conjunto de elementos, con ese elemento es una matriz en sí:

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)}
Respondida el 09/10/2019 a las 19:17
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more