What is an elegant way to pack and unpack an array of structures to/from a single vector?
74 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
What I've got is an array of structures of somewhat complicated data:
data(1).r = [ 1 2 3 ];
data(1).v = [ 4 5 6 ];
data(1).m = 100;
data(2).r = [ 7 8 9 ];
data(2).v = [ 10 11 12 ];
data(2).m = 101;
I'd like to convert this to an array where each structure was packed together. My solution looks like this:
N = length(data);
x = [];
for i=1:N
x = [ x data(i).r data(i).v data(i).m ];
end
Which results in the correct order that I'd like the structures to be packed into the vector:
x =
1 2 3 4 5 6 100 7 8 9 10 11 12 101
Is there a more elegant way to do that packing, and what is the most elegant way to do the reverse operation and unpack that array back into an array of structures?
0 commentaires
Réponses (1)
madhan ravi
le 7 Juin 2019
Modifié(e) : madhan ravi
le 7 Juin 2019
z = struct2cell(data);
x = [z{:}]
data = cell2struct(z,{'r','v','m'}) % reverse
Voir également
Catégories
En savoir plus sur Data Type Conversion 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!