Add a vector to a struct array
20 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Frank
el 21 de Ag. de 2014
Editada: Sean de Wolski
el 22 de Ag. de 2014
I have a struct array, say
a(1).b=1
a(2).b=1
a(1).c=1
a(2).c=1
and an vector, say
c=[1 2]
Now I want to add vector c to a, in order to obtain something like a.c
How can I do this without a for-loop? (actually the length of the struct is not 2, but thousands)
0 comentarios
Respuesta aceptada
Sean de Wolski
el 21 de Ag. de 2014
Editada: Sean de Wolski
el 21 de Ag. de 2014
You could use a for-loop (which would be the easiest to understand) and may be the fastest. Or you could use comma-separated list expansion which is trickier.
a(1).b=1
a(2).b=1
a(1).c=1
a(2).c=1
c = [pi exp(1)];
c = num2cell(c)
[a(:).c] = c{:}
a.c
Frankly, I would recommend avoiding this structure altogether. Why not have a 1x1 struct with a field c which is a 1xn?
a.c = [1 2]
a.c(2)
2 comentarios
Sean de Wolski
el 22 de Ag. de 2014
Editada: Sean de Wolski
el 22 de Ag. de 2014
That's exactly what my first approach does! It uses comma separated list expansion (instead of a for-loop) on both the left and right hand side to distribute the elements.
Más respuestas (0)
Ver también
Categorías
Más información sobre Structures en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!