2012-10-09 35 views
7

En Matlab, la asignación de matrices de células a un campo matrices struct foo es posible convalor Asignar para el mismo campo de cada elemento de la estructura no escalares

my_array(1000).foo = []; 
[my_array.foo] = some_cell{:}; 

Ahora lo que me gustaría hacer es asignar un único valor para todos los campos en la matriz. Pero sea lo que sea que intenté, Matlab devolvería los mensajes de error en lugar de suponer silenciosamente que si quiero asignar un solo elemento de tamaño [1x1], debería asignarse a todos los campos. Yo sería feliz si pudiera decir simplemente ej .:

my_array.foo = pi; 
??? Incorrect number of right hand side elements in dot name assignment. 
Missing [] around left hand side is a likely cause. 

Entonces, ¿cómo puedo asignar un único valor a un campo de todo un conjunto de estructura?

Respuesta

12

Puede utilizar deal para resolver este problema:

my_array(1000).foo = []; 
[my_array.foo] =deal(pi); 

Sin embargo, tenga en cuenta los corchetes en la segunda línea con son necesarios para convertir temporalmente la lista separada por comas my_array.foo separa en un vector.

Cuestiones relacionadas