How to split a cell array by finding certain cells
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Stephen Liederbach
le 3 Août 2015
Commenté : Stephen Liederbach
le 4 Août 2015
Say I have a cell that is something like
testCell = {'start', 1, 2, 3, 'start', 4, 5, 'start', 6, 7, 8, 9}
How can I split it into several separate cells so that I get something like
test1 = {'start', 1, 2, 3}
test2 = {'start', 4, 5}
test3 = {'start', 6, 7, 8, 9}
In the final program the length of the original cell, as well as the number of times 'start' appears isn't constant, and the data in between is sometimes numbers, sometimes strings, and occasionally has some empty cells (which can't be deleted)
Any help would be appreciated
0 commentaires
Réponse acceptée
Matt J
le 3 Août 2015
Modifié(e) : Matt J
le 3 Août 2015
This is perhaps the closest thing to your request without incurring the problems discussed in this thread. In other words, instead of separate variables test1, test2, test3,... I've given you test{1}, test{2}, test{3}, ...
a=strcmp(testCell,'start');
z=cumsum(a);
N=sum(a);
test=cell(1,N);
for i=1:N, test{i}=testCell(z==i); end
Plus de réponses (1)
Andrei Bobrov
le 3 Août 2015
Modifié(e) : Andrei Bobrov
le 3 Août 2015
accumarray(cumsum(strcmp(testCell,'start'))',...
(1:numel(testCell))',[],@(x){testCell(x)})
0 commentaires
Voir également
Catégories
En savoir plus sur Testing Frameworks dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!