MATLAB: Splitting large cell array into smaller cell arrays

cell arrays

hi
I have a large cell array "a" (5290*1) such that each element of the array is of size e.g. size(a{1,1}) = 21*204
i want to split these further such that each element of a{1,1} contains another cell array such that size of a{1,1}.b1 = 3*204 and i have a{1,1}.b1, a{1,1}.b2…. a{1,1}.b7 so a{1,1} contains 7 cells of size 3*204. how can i achieve this without for loop?
Many thanks for you help.

Best Answer

If you really want to have the inside to be a struct, you can go with
c=cellfun(@(x) cell2struct(mat2cell(x,3*ones(7,1),204),{'b1','b2','b3','b4','b5','b6','b7'}),a,'uniform',false);
For sure, the {'b1'...'b7'} can be done nicer (ask if you need help with that).
Anyway, most likely it's better to keep the internal to be cells, then the upper code simplifies to
c=cellfun(@(x) mat2cell(x,3*ones(7,1),204),a,'uniform',false);