Add a vector to a struct array
20 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Frank
le 21 Août 2014
Modifié(e) : Sean de Wolski
le 22 Août 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 commentaires
Réponse acceptée
Sean de Wolski
le 21 Août 2014
Modifié(e) : Sean de Wolski
le 21 Août 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 commentaires
Sean de Wolski
le 22 Août 2014
Modifié(e) : Sean de Wolski
le 22 Août 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.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Structures dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!