es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Usando Python para crear un archivo .mat con una matriz de celdas en él.

Estoy tratando de crear un archivo .mat con una celda en él. Intenté aplicar algunas soluciones que encontré en Internet, pero ninguna de ellas funcionó.

El código que deseo tener al final es algo así:

import scipy.io as sio

l = [ [ [1,2,3], [4,5,6] ], [ [10, 20, 30] , [40, 50, 60] ] ]

c = # Algún código para hacer que aparezca como una matriz de celdas en Matlab

sio.savemat('f.mat', { 'cell' : c })

Entonces, la matriz de celdas al final se vería así:
[ [1,2,3], [4,5,6] ] [ [10, 20, 30] , [40, 50, 60] ]

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para crear un archivo mat con un cell array, necesitas usar el motor ‘matlab’ en scipy.io.savemat(), y pasar el cell array como un diccionario con la clave como el nombre del cell array. Aquí tienes el código modificado que debería funcionar:

    import scipy.io as sio
    
    l = [ [ [1,2,3], [4,5,6] ], [ [10, 20, 30] , [40, 50, 60] ] ]
    
    c = np.array(l, dtype=np.object)
    
    sio.savemat('f.mat', {'cell': c}, format='5', long_field_names=True)
    

    En este código, utilicé numpy para crear el cell array c. Establecí el tipo de dato como ‘object’ para permitir diferentes tipos de datos en las celdas. Finalmente, pasé los argumentos ‘format’ y ‘long_field_names’ para garantizar la compatibilidad con versiones más antiguas de Matlab.

    El archivo mat resultante debería contener un cell array llamado ‘cell’, que contiene los datos en l.

Comments are closed.