convert a nested struct in a matrix
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi, I have a nested struct
userTouristicTraj(1).touristicData(:).traj --> [1;1][1;1;1;1;1][1;1;1;1][1;1;1;1;1;1];[1;1];
userTouristicTraj(2).touristicData(:).traj --> [4;4][5;5]
userTouristicTraj(3).touristicData(:).traj --> [12;12;12;12;6][12;12]
and I want to trasform it in a matrix
A= [1 1 0 0 0 0; 1 1 1 1 1 0; 1 1 1 1 0 0; 1 1 1 1 1 1; 1 1 0 0 0 0; 4 4 0 0 0 0; 5 5 0 0 0 0; 12 12 12 12 6 0; 12 12 0 0 0 0]
I have try to use the functions struc2cell and cell2mat but the code doesn't run and maybe I have to use a different way
a=struct2cell(userTouristicTraj);
b=cell2mat(a);
Error using cell2mat (line 64)
The field names of each cell array element must be consistent and in consistent order.
Can you help me, please? thanks
0 commentaires
Réponse acceptée
Guillaume
le 5 Juin 2017
Modifié(e) : Guillaume
le 5 Juin 2017
Assuming that all your structures have the same fields in all the substructures:
alltdata = [userTouristicTraj.touristicData]; %concatenate all touristicData into a single structure
alltraj = {alltdata.traj}; %and extract all traj into a cell array
maxlength = max(cellfun(@numel, alltraj));
alltraj = cellfun(@(v) [v.', zeros(1, maxlength - numel(v))], alltraj, 'UniformOutput', false) %pad as necessary
alltraj = vertcat(alltraj{:});
4 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Structures dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!