convert a nested struct in a matrix
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Guillaume
2017-6-5
编辑:Guillaume
2017-6-5
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!