2011-05-08 18 views
11

Quería resumir algunas variables dentro de una sola estructura, para facilitar la entrada y salida de las funciones, ya que se envían un poco. El problema es que una de las variables es una matriz de celdas, que contiene cadenas específicamente. Evidentemente, una vez una de las variables dadas aUna matriz de celdas dentro de una estructura en Matlab - posible?

struct(var1,var2,...) 

es un conjunto de células, a continuación, hace que el struct una matriz de células de estructuras, en vez de tener la serie de células una variable interna de la struct - que no es mi resultado deseado y requeriría feo montón de código.

¿Hay alguna solución/solución a este problema?

+5

Esto se abordó en un duplicado anterior: [MATLAB "error" (o comportamiento realmente extraño) con estructuras y matrices de celdas vacías] (http://stackoverflow.com/questions/939544/matlab-bug-or-really-weird-behavior-with- structs-and-empty-cell-arrays). La solución es que debe envolver un valor de matriz de celdas para un campo en una matriz de celdas adicional al pasarlo a la función STRUCT. – gnovice

Respuesta

24

Puede configurar el campo directamente:

X = struct('a', 'one', 'b', 'honk'); 
X.c = {'x', 'y'}; 

O, si usted quiere hacer todo dentro struct() se puede poner la serie de células en una matriz celular:

X = struct('a', 'one', 'b', 'honk', 'c', {{'foo', 'bar'}}); 
X = 
    a: 'one' 
    b: 'honk' 
    c: {'foo' 'bar'} 
+0

gracias, muy útil! – dan12345

Cuestiones relacionadas