Fill new row of cell array after delimiter

My cell array (1 X 11) is as follows:
a = {'A','B','C',';','D','E','F',';','1','2','3'}
Each character
I want a matlab program to recognize ';'(semicolon) as delimiter and whatever follows it comes to next row.
Desired output is a cell array of order 3 X 3
{ 'A','B','C'
'D','E','F'
'1','2','3' }

 Accepted Answer

a = {'A','B','C',';','D','E','F',';','1','2','3'};
sep = find(strcmp(a, ';'));
b = a;
b(sep) = [];
b = transpose(reshape(b, sep(1) - 1), []);

2 Comments

Hi Jan
It worked perfectly..
b = transpose(reshape(b, sep(1) - 1), [ ]);
But I did not understand the last line syntax. What does [ ] denotes ?
It is a typo. The parenthesis must move:
b = transpose(reshape(b, sep(1) - 1, []));
Then RESHAPE changes the shape such, that the result has sep(1)-1 rows and the number of columns is determined automatically by the number of elements.

Sign in to comment.

More Answers (0)

Categories

Asked:

on 17 Apr 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!