Unnest cell array with nested cells to a cell array
Show older comments
How do I expand out an array with dimension '<100x1 cell>' in which each cell has a dimension '<1x11 cell>' into an array with dimension '<100x11 cell>'. Surely this must be straightforward? Thx
Accepted Answer
More Answers (2)
Gabor Bekes
on 11 Nov 2019
You might want something along the lines of:
a2 = {{'asdf',{'asdf','asdf',{'asdf'},{'asdf'},{'asdf',{'asdf'}},'asdf'},{'asdf',{'asdf'},{{'asdf'}}}},'asdf'}
while any(cellfun(@iscell,a2))
a2 = [a2{cellfun(@iscell,a2)} a2(~cellfun(@iscell,a2))];
end
Now, you need to know in advance if you have a row, column or matrix layout cell array, and you need to use vertcat() for the latter two cases (logical indexing produces columns).
1 Comment
Simon Matte
on 12 Oct 2020
Stumbled on this by googling a similar situation, wanted to add:
The previous solution works, but it also re-orders the elements in your cell array. Since it mattered in my specific case, I used this variant for my application:
while any(cellfun(@iscell, a2))
idx = cellfun(@iscell, a2);
a2(idx) = a2{idx};
a2(~idx) = a2(~idx);
end
Federico Canè
on 20 Oct 2014
0 votes
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!