MATLAB Answers


Fill new row of cell array after delimiter

Asked by Priya
on 17 Apr 2013

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'


'1','2','3' }



No products are associated with this question.

1 Answer

Answer by Jan Simon
on 17 Apr 2013
 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), []);


on 17 Apr 2013

Hi Jan

It worked perfectly..

b = transpose(reshape(b, sep(1) - 1), [ ]);

But I did not understand the last line syntax. What does [ ] denotes ?

Jan Simon
on 17 Apr 2013

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.

Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!