Unnest cell array with nested cells to a cell array
Afficher commentaires plus anciens
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
Réponse acceptée
Plus de réponses (2)
Gabor Bekes
le 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 commentaire
Simon Matte
le 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è
le 20 Oct 2014
0 votes
Catégories
En savoir plus sur Matrix Indexing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!