Something like this might work for you:
cell2mat(cellfun(@(s)s.field,C,'uni',0))
it assumes that the data is able to be concatenated into one array, and that the structures are scalar. You will need to use the correct fieldname, and orient the input cell array and its contents to suit your data (you did not give any info about this). Here is an example:
>> C{1,1} = struct('A',1:3);
>> C{2,1} = struct('A',4:6);
>> C{3,1} = struct('A',7:9);
>> cell2mat(cellfun(@(s)s.A,C,'uni',0))
ans =
1 2 3
4 5 6
7 8 9
"Is there a better way?"
This task would be much simpler if you simply used one non-scalar structure, then you could simply do this: cat(1,S.field)
[S.field]
vertcat(S.field)
etc.
For example:
>> S(1).A = 1:3;
>> S(2).A = 4:6;
>> S(3).A = 7:9;
>> vertcat(S.A)
ans =
1 2 3
4 5 6
7 8 9
Do you see how much simpler the code is, because I stored the data in a much better way?
Best Answer