matriz de celdas de cadenas a estructura matlab

matriz de celdas de cadenas a estructura matlab

Necesito crear una estructura matlab como tal ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}})que se almacene como una matriz de estructura de 1x2 con un nombre de campo. Una llamada a ds.namegenera la salida:

ds.name
ans = 'my_name_is'
ans = 'matlab_thining_hair'

Tenga en cuenta las comillas simples en el resultado. Son importantes. Dicho esto, necesito crear la estructura mencionada anteriormente usando la siguiente variable: X = [1x46 char] [1x47 char]es decir, celda 1x2, que creo que en realidad es una matriz de cadenas de celdas. Entre otras cosas, he probado lo siguiente:

Y = cell2struct(X, 'name', 1)'

lo que da como resultado una matriz de estructura de 1x2 con el nombre de los campos; sin embargo, una llamada a Y genera la salida:

Y.name
ans = my_name_is
ans = matlab_thining_hair

Tenga en cuenta que faltan las comillas simples en el resultado, y aunque tanto Y como ds son matrices de estructuras de 1x2 con nombres de campos, los valores de los campos no tienen el mismo formato y las estructuras también varían en su tamaño de bytes. Básicamente, lo que necesito es una estructura con campos de matrices de celdas, donde esencialmente cada matriz de celdas consta de una matriz de caracteres única. No sé cómo formatear los valores de los campos como matrices de caracteres. Cualquier ayuda sería muy apreciada.

Respuesta1

La discrepancia en su ejemplo es que cada elemento de su ejemplo original ds.name es una celda que contiene un carácter (por ejemplo, {'mi nombre es'}), mientras que cada elemento de X es un carácter (por ejemplo, 'mi nombre es'). Si cambia el tipo de cada elemento de X de un carácter a una celda que contiene un carácter, entonces debería obtener el comportamiento que está buscando.

Esto se muestra en el siguiente ejemplo.

X2={{'my_name_is'},{'matlab_thinning_hair'}};

Y = cell2struct(X2, 'nombre', 1);

Y nombre

respuesta =

'mi nombre es'

respuesta =

'matlab_thinning_hair'

Podrías lograr esto para tu variable X indexando los elementos y realizando:

X2{1}={X{1}};

X2{2}={X{2}}

La ayuda de Matlab.aquíes bastante útil en este tema.

información relacionada