How to split a cell array by finding certain cells
조회 수: 4 (최근 30일)
이전 댓글 표시
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
채택된 답변
Matt J
2015년 8월 3일
편집: Matt J
2015년 8월 3일
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
추가 답변 (1개)
Andrei Bobrov
2015년 8월 3일
편집: Andrei Bobrov
2015년 8월 3일
accumarray(cumsum(strcmp(testCell,'start'))',...
(1:numel(testCell))',[],@(x){testCell(x)})
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Testing Frameworks에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!